"""
Interface to the config_tests.xml file. This class inherits from GenericEntry
"""
from CIME.XML.standard_module_setup import *
from CIME.XML.generic_xml import GenericXML
from CIME.XML.files import Files
logger = logging.getLogger(__name__)
[docs]class Tests(GenericXML):
def __init__(self, infile=None, files=None):
"""
initialize an object interface to file config_tests.xml
"""
if infile is None:
if files is None:
files = Files()
infile = files.get_value("CONFIG_TESTS_FILE")
GenericXML.__init__(self, infile)
# append any component specific config_tests.xml files
for comp in files.get_components("CONFIG_TESTS_FILE"):
if comp is None:
continue
infile = files.get_value("CONFIG_TESTS_FILE", attribute={"component":comp})
if os.path.isfile(infile):
self.read(infile)
[docs] def get_test_node(self, testname):
logger.debug("Get settings for {}".format(testname))
node = self.get_child("test",{"NAME":testname})
logger.debug("Found {}".format(self.text(node)))
return node
[docs] def print_values(self, skip_infrastructure_tests=True):
"""
Print each test type and its description.
If skip_infrastructure_tests is True, then this does not write
information for tests with the attribute
INFRASTRUCTURE_TEST="TRUE".
"""
all_tests = []
root = self.get_optional_child("testlist")
if root is not None:
all_tests = self.get_children("test", root=root)
for one_test in all_tests:
if skip_infrastructure_tests:
infrastructure_test = self.get(one_test, "INFRASTRUCTURE_TEST")
if (infrastructure_test is not None and
infrastructure_test.upper() == "TRUE"):
continue
name = self.get(one_test, "NAME")
desc = self.get_element_text("DESC", root=one_test)
logger.info("{}: {}".format(name, desc))