Source code for CIME.XML.testspec

"""
Interface to the testspec.xml file.  This class inherits from generic_xml.py
"""
from CIME.XML.standard_module_setup import *

from CIME.XML.generic_xml import GenericXML

logger = logging.getLogger(__name__)


[docs] class TestSpec(GenericXML): def __init__(self, infile): """ initialize an object """ GenericXML.__init__(self, infile) self._testnodes = {} self._testlist_node = None if os.path.isfile(infile): testnodes = self.get_children("test") for node in testnodes: self._testnodes[self.get(node, "name")] = node
[docs] def set_header( self, testroot, machine, testid, baselinetag=None, baselineroot=None ): tlelem = self.make_child("testlist") for name, text in [ ("testroot", testroot), ("machine", machine), ("testid", testid), ("baselinetag", baselinetag), ("baselineroot", baselineroot), ]: if text is not None: self.make_child(name, root=tlelem, text=text) self._testlist_node = tlelem
[docs] def add_test(self, compiler, mpilib, testname): expect( testname not in self._testnodes, "Test {} already in testlist".format(testname), ) telem = self.make_child( "test", attributes={"name": testname}, root=self._testlist_node ) for name, text in [("compiler", compiler), ("mpilib", mpilib)]: self.make_child(name, root=telem, text=text) self._testnodes[testname] = telem
[docs] def update_test_status(self, testname, phase, status): expect( testname in self._testnodes, "Test {} not defined in testlist".format(testname), ) root = self._testnodes[testname] pnode = self.get_optional_child("section", {"name": phase}, root=root) if pnode is not None: self.set(pnode, "status", status) else: self.make_child("section", {"name": phase, "status": status}, root=root)