2018-04-04 16:35:41 +03:00
# This work is licensed under the GNU GPLv2 or later.
2018-03-20 22:00:02 +03:00
# See the COPYING file in the top-level directory.
2015-04-22 03:12:37 +03:00
import traceback
2020-07-17 22:59:11 +03:00
import pytest
2015-04-22 21:44:52 +03:00
2020-07-17 22:59:11 +03:00
import tests . utils
2015-04-22 03:12:37 +03:00
2020-07-17 22:59:11 +03:00
import virtinst
2019-05-15 20:36:41 +03:00
2020-07-17 22:59:11 +03:00
def _skipIfTestsFailed ( ) :
if tests . utils . TESTCONFIG . skip_checkprops :
pytest . skip ( " Other tests failed or were skipped, don ' t do prop checks " )
def testCheckXMLBuilderProps ( ) :
"""
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 .
If no tests failed or were skipped , we check to ensure the
test suite is tickling every XML property
"""
_skipIfTestsFailed ( )
# pylint: disable=protected-access
fail = [ p for p in virtinst . xmlbuilder . _allprops
if p not in virtinst . xmlbuilder . _seenprops ]
msg = None
try :
2020-09-10 20:06:41 +03:00
if fail :
raise RuntimeError ( str ( fail ) )
except Exception :
2020-07-17 22:59:11 +03:00
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 test_cli.py and/or test_xmlparse.py. " )
if msg :
pytest . fail ( msg )
def testCheckCLISuboptions ( ) :
"""
Track which command line suboptions and aliases we actually hit with
the test suite .
"""
_skipIfTestsFailed ( )
# pylint: disable=protected-access
from virtinst import cli
unchecked = cli . _SuboptChecker . get_unseen ( )
if unchecked :
msg = " \n \n "
msg + = " \n " . join ( sorted ( a for a in unchecked ) ) + " \n \n "
msg + = ( " These command line arguments or aliases are not checked \n "
" in the test suite. Please test them. \n "
" Total unchecked arguments: %s " % len ( unchecked ) )
pytest . fail ( msg )