# This work is licensed under the GNU GPLv2 or later. # See the COPYING file in the top-level directory. import logging import traceback import unittest import virtinst class CheckPropsTest(unittest.TestCase): maxDiff = None def testCheckProps(self): # pylint: disable=protected-access # Access to protected member, needed to unittest stuff skip = False try: # Accessing an internal detail of unittest, but it's only # to prevent incorrect output in the case that other tests # failed or were skipped, which can give a false positive here result = self._outcome.result skip = bool(result.errors or result.failures or result.skipped) except Exception: logging.debug("unittest skip hack failed", exc_info=True) if skip: self.skipTest("skipping as other tests failed/skipped") # If a certain environment variable is set, XMLBuilder tracks # every property registered and every one of those that is # actually altered. The test suite sets that env variable. # # testClearProps resets the 'set' list, and this test # ensures that every property we know about has been touched # by one of the above tests. fail = [p for p in virtinst.xmlbuilder._allprops if p not in virtinst.xmlbuilder._seenprops] msg = None try: self.assertEqual([], fail) except AssertionError: msg = "".join(traceback.format_exc()) + "\n\n" msg += ("This means that there are XML properties that are\n" "untested in the test suite. This could be caused\n" "by a previous test suite failure, or if you added\n" "a new property and didn't extend the test suite.\n" "Look into extending clitest.py and/or xmlparse.py.") if msg: self.fail(msg)