From abd006657bc302db4f1979610fe738bba7aa6ce4 Mon Sep 17 00:00:00 2001 From: Abhijit Menon-Sen Date: Thu, 17 Sep 2015 19:32:14 +0530 Subject: [PATCH] Add test/units/inventory with a few _split_pattern tests There were no inventory-specific unit tests earlier, so we add a new directory for them with some initial low-level tests of _split_pattern with various valid and deprecated pattern strings. --- test/units/inventory/__init__.py | 21 ++++++++++ test/units/inventory/test_inventory.py | 58 ++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 test/units/inventory/__init__.py create mode 100644 test/units/inventory/test_inventory.py diff --git a/test/units/inventory/__init__.py b/test/units/inventory/__init__.py new file mode 100644 index 00000000000..785fc459921 --- /dev/null +++ b/test/units/inventory/__init__.py @@ -0,0 +1,21 @@ +# (c) 2012-2014, Michael DeHaan +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + diff --git a/test/units/inventory/test_inventory.py b/test/units/inventory/test_inventory.py new file mode 100644 index 00000000000..3869e15b587 --- /dev/null +++ b/test/units/inventory/test_inventory.py @@ -0,0 +1,58 @@ +# Copyright 2015 Abhijit Menon-Sen +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . + +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +from ansible.compat.tests import unittest +from ansible.compat.tests.mock import patch, MagicMock + +from ansible.errors import AnsibleError, AnsibleParserError +from ansible.inventory import Inventory +from ansible.vars import VariableManager + +from units.mock.loader import DictDataLoader + +class TestInventory(unittest.TestCase): + + patterns = { + 'a': ['a'], + 'a, b': ['a', 'b'], + 'a , b': ['a', 'b'], + ' a,b ,c[1:2] ': ['a', 'b', 'c[1:2]'], + '9a01:7f8:191:7701::9': ['9a01:7f8:191:7701::9'], + '9a01:7f8:191:7701::9,9a01:7f8:191:7701::9': ['9a01:7f8:191:7701::9', '9a01:7f8:191:7701::9'], + '9a01:7f8:191:7701::9,9a01:7f8:191:7701::9,foo': ['9a01:7f8:191:7701::9', '9a01:7f8:191:7701::9','foo'], + 'foo[1:2]': ['foo[1:2]'], + 'a::b': ['a::b'], + 'a:b': ['a', 'b'], + ' a : b ': ['a', 'b'], + 'foo:bar:baz[1:2]': ['foo', 'bar', 'baz[1:2]'], + } + + def setUp(self): + v = VariableManager() + fake_loader = DictDataLoader({}) + + self.i = Inventory(loader=fake_loader, variable_manager=v, host_list='') + + def test_split_patterns(self): + + for p in self.patterns: + r = self.patterns[p] + self.assertEqual(r, self.i._split_pattern(p))