Permalink
Browse files

Merge pull request #6319 from risaacson/fix_test_dir_inventory

Fix TestInventory Unit Tests

Tested clean.
  • Loading branch information...
2 parents 868746b + 913c855 commit 119434d0797b65da7230797c4579af8c3509821b @risaacson risaacson committed Mar 6, 2014
@@ -123,12 +123,22 @@ def _parse_base_groups(self):
(k,v) = t.split("=", 1)
except ValueError, e:
raise errors.AnsibleError("Invalid ini entry: %s - %s" % (t, str(e)))
- try:
- host.set_variable(k,ast.literal_eval(v))
- except:
- # most likely a string that literal_eval
- # doesn't like, so just set it
- host.set_variable(k,v)
+
+ # 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:
+ host.set_variable(k,ast.literal_eval(v))
+ # Using explicit exceptions.
+ # Likely a string that literal_eval does not like. We wil then just set it.
+ except ValueError:
+ # For some reason this was thought to be malformed.
+ 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)
# [southeast:children]
@@ -417,15 +417,24 @@ def test_allows_equals_sign_in_var(self):
auth = inventory.get_variables('neptun')['auth']
assert auth == 'YWRtaW46YWRtaW4='
- # test disabled as needs to be updated to model desired behavior
- #
- #def test_dir_inventory(self):
- # inventory = self.dir_inventory()
- # vars = inventory.get_variables('zeus')
- #
- # print "VARS=%s" % vars
- #
- # assert vars == {'inventory_hostname': 'zeus',
- # 'inventory_hostname_short': 'zeus',
- # 'group_names': ['greek', 'major-god', 'ungrouped'],
- # 'var_a': '1#2'}
+ def test_dir_inventory(self):
+ inventory = self.dir_inventory()
+
+ host_vars = inventory.get_variables('zeus')
+
+ expected_vars = {'inventory_hostname': 'zeus',
+ 'inventory_hostname_short': 'zeus',
+ 'group_names': ['greek', 'major-god', 'ungrouped'],
+ 'var_a': '3#4'}
+
+ print "HOST VARS=%s" % host_vars
+ print "EXPECTED VARS=%s" % expected_vars
+
+ assert host_vars == expected_vars
+
+ def test_dir_inventory_multiple_groups(self):
+ inventory = self.dir_inventory()
+ group_greek = inventory.get_hosts('greek')
+ actual_host_names = [host.name for host in group_greek]
+ print "greek : %s " % actual_host_names
+ assert actual_host_names == ['zeus', 'morpheus']
@@ -1,3 +1,3 @@
-zeus var_a=2
+zeus var_a=0
morpheus
thor
@@ -1,5 +1,5 @@
[major-god]
-zeus var_a=1
+zeus var_a=2
thor
[minor-god]
@@ -1,5 +1,5 @@
[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
thor

0 comments on commit 119434d

Please sign in to comment.