1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Fixes related to uncommenting test_dir_inventory in TestInventory.

0. Uncomment the test.
1. Test fails.
2. Make vars unique per file in test inventory files.
3. Modify token addition to not ast.literal_eval(v) a variable containing a hash.
4. Modify vars to have an escape in test inventory file.
5. Catch exceptions explicitly. Any unknown exceptions should be a bug.
6. Test passes.
This commit is contained in:
Richard C Isaacson 2014-03-06 12:09:53 -06:00
parent 616d7e53b1
commit 16fe09eef8
5 changed files with 33 additions and 21 deletions

View file

@ -123,12 +123,22 @@ class InventoryParser(object):
(k,v) = t.split("=", 1) (k,v) = t.split("=", 1)
except ValueError, e: except ValueError, e:
raise errors.AnsibleError("Invalid ini entry: %s - %s" % (t, str(e))) raise errors.AnsibleError("Invalid ini entry: %s - %s" % (t, str(e)))
# If there is a hash in the value don't pass it through to ast at ast will split at the hash.
if "#" in v:
host.set_variable(k, v)
else:
try: try:
host.set_variable(k,ast.literal_eval(v)) host.set_variable(k,ast.literal_eval(v))
except: # Using explicit exceptions.
# most likely a string that literal_eval # Likely a string that literal_eval does not like. We wil then just set it.
# doesn't like, so just set it except ValueError:
# For some reason this was thought to be malformed.
host.set_variable(k, v) host.set_variable(k, v)
except SyntaxError:
# Is this a hash with an equals at the end?
host.set_variable(k, v)
self.groups[active_group_name].add_host(host) self.groups[active_group_name].add_host(host)
# [southeast:children] # [southeast:children]

View file

@ -417,15 +417,17 @@ class TestInventory(unittest.TestCase):
auth = inventory.get_variables('neptun')['auth'] auth = inventory.get_variables('neptun')['auth']
assert auth == 'YWRtaW46YWRtaW4=' assert auth == 'YWRtaW46YWRtaW4='
# test disabled as needs to be updated to model desired behavior def test_dir_inventory(self):
# inventory = self.dir_inventory()
#def test_dir_inventory(self):
# inventory = self.dir_inventory() host_vars = inventory.get_variables('zeus')
# vars = inventory.get_variables('zeus')
# expected_vars = {'inventory_hostname': 'zeus',
# print "VARS=%s" % vars 'inventory_hostname_short': 'zeus',
# 'group_names': ['greek', 'major-god', 'ungrouped'],
# assert vars == {'inventory_hostname': 'zeus', 'var_a': '3#4'}
# 'inventory_hostname_short': 'zeus',
# 'group_names': ['greek', 'major-god', 'ungrouped'], print "HOST VARS=%s" % host_vars
# 'var_a': '1#2'} print "EXPECTED VARS=%s" % expected_vars
assert host_vars == expected_vars

View file

@ -1,3 +1,3 @@
zeus var_a=2 zeus var_a=0
morpheus morpheus
thor thor

View file

@ -1,5 +1,5 @@
[major-god] [major-god]
zeus var_a=1 zeus var_a=2
thor thor
[minor-god] [minor-god]

View file

@ -1,5 +1,5 @@
[major-god] # group with inline comments [major-god] # group with inline comments
zeus var_a="1#2" # host with inline comments and "#" in the var string zeus var_a="3\#4" # host with inline comments and "#" in the var string
# A comment # A comment
thor thor