From 806bbbb4eaa8fe2eacbb43116615d1ccce61bd49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 21 Feb 2017 17:00:52 +0400 Subject: [PATCH] tests/nodedev: make compare recursive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will allow to have nested dict for childrens. See the following commits. Signed-off-by: Marc-André Lureau --- tests/nodedev.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/tests/nodedev.py b/tests/nodedev.py index 5d9fdec8a..1a69c823b 100644 --- a/tests/nodedev.py +++ b/tests/nodedev.py @@ -68,18 +68,26 @@ class TestNodeDev(unittest.TestCase): return NodeDevice.parse(conn, xml) def _testCompare(self, devname, vals, devxml=None): + def _compare(dev, vals, root=""): + for attr in vals.keys(): + expect = vals[attr] + actual = getattr(dev, attr) + if isinstance(expect, list): + for adev, exp in zip(actual, expect): + _compare(adev, exp, attr + ".") + else: + if expect != actual: + raise AssertionError("devname=%s attribute=%s%s did not match:\n" + "expect=%s\nactual=%s" % (devname, root, attr, expect, actual)) + self.assertEqual(vals[attr], getattr(dev, attr)) + if devxml: dev = NodeDevice.parse(conn, devxml) else: dev = self._nodeDevFromName(devname) - for attr in vals.keys(): - expect = vals[attr] - actual = getattr(dev, attr) - if expect != actual: - raise AssertionError("devname=%s attribute=%s did not match:\n" - "expect=%s\nactual=%s" % (devname, attr, expect, actual)) - self.assertEqual(vals[attr], getattr(dev, attr)) + _compare(dev, vals) + return dev def _testNode2DeviceCompare(self, nodename, devfile, nodedev=None): devfile = os.path.join("tests/nodedev-xml/devxml", devfile)