virt-manager/tests/checkprops.py
Cole Robinson 6954c6774a tests: Fix running testsuite on older libvirt
If we try to run the testsuite on anything older than libvirt 3.1,
it immediately throws an exception before processing any tests,
due to choking on parsing drm bits from testdriver.xml. This global
failure is only due to sloppy coding though.

Turn all test cases that use testdriver.xml into skips in this case,
so we can at least get some test coverage otherwise.
2018-02-22 16:01:24 -05:00

50 lines
1.8 KiB
Python

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 postive 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)