From fb7c56e3d32b2611677e244b1e499e40f3a74ebb Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Sat, 12 Mar 2022 23:40:23 -0800 Subject: [PATCH] Add unit test for print_hostnames of inventory.py (#8558) This adds a unit test for the function. --- .../inventory_builder/tests/test_inventory.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/contrib/inventory_builder/tests/test_inventory.py b/contrib/inventory_builder/tests/test_inventory.py index 4596f3396..12416f2d3 100644 --- a/contrib/inventory_builder/tests/test_inventory.py +++ b/contrib/inventory_builder/tests/test_inventory.py @@ -13,6 +13,7 @@ # under the License. import inventory +from test import support import unittest from unittest import mock @@ -26,6 +27,28 @@ if path not in sys.path: import inventory # noqa +class TestInventoryPrintHostnames(unittest.TestCase): + + @mock.patch('ruamel.yaml.YAML.load') + def test_print_hostnames(self, load_mock): + mock_io = mock.mock_open(read_data='') + load_mock.return_value = OrderedDict({'all': {'hosts': { + 'node1': {'ansible_host': '10.90.0.2', + 'ip': '10.90.0.2', + 'access_ip': '10.90.0.2'}, + 'node2': {'ansible_host': '10.90.0.3', + 'ip': '10.90.0.3', + 'access_ip': '10.90.0.3'}}}}) + with mock.patch('builtins.open', mock_io): + with self.assertRaises(SystemExit) as cm: + with support.captured_stdout() as stdout: + inventory.KubesprayInventory( + changed_hosts=["print_hostnames"], + config_file="file") + self.assertEqual("node1 node2\n", stdout.getvalue()) + self.assertEqual(cm.exception.code, 0) + + class TestInventory(unittest.TestCase): @mock.patch('inventory.sys') def setUp(self, sys_mock):