Source code for CIME.tests.test_unit_test_status

#!/usr/bin/env python3

import unittest
import os
from CIME import test_status
from CIME import expected_fails
from CIME.tests.custom_assertions_test_status import CustomAssertionsTestStatus


[docs] class TestTestStatus(CustomAssertionsTestStatus): _TESTNAME = "fake_test" # An arbitrary phase we can use when we want to work with a non-core phase _NON_CORE_PHASE = test_status.MEMLEAK_PHASE
[docs] def setUp(self): self._ts = test_status.TestStatus( test_dir=os.path.join("nonexistent", "path"), test_name=self._TESTNAME, no_io=True, ) self._set_core_phases_to_pass()
def _set_core_phases_to_pass(self): """Set all core phases of self._ts to pass status""" with self._ts: for phase in test_status.CORE_PHASES: self._ts.set_status(phase, test_status.TEST_PASS_STATUS) def _set_last_core_phase_to_fail(self): """Sets the last core phase to FAIL Returns the name of this phase""" fail_phase = test_status.CORE_PHASES[-1] self._set_phase_to_status(fail_phase, test_status.TEST_FAIL_STATUS) return fail_phase def _set_phase_to_status(self, phase, status): """Set given phase to given status""" with self._ts: self._ts.set_status(phase, status)
[docs] def test_get_latest_phase(self): assert self._ts.get_latest_phase() == test_status.RUN_PHASE
[docs] def test_current_is(self): assert self._ts.current_is(test_status.RUN_PHASE, test_status.TEST_PASS_STATUS) assert not self._ts.current_is( test_status.RUN_PHASE, test_status.TEST_PEND_STATUS ) assert not self._ts.current_is( test_status.SUBMIT_PHASE, test_status.TEST_PASS_STATUS )
# ------------------------------------------------------------------------ # Tests of TestStatus.phase_statuses_dump # ------------------------------------------------------------------------
[docs] def test_psdump_corePhasesPass(self): output = self._ts.phase_statuses_dump() self.assert_core_phases(output, self._TESTNAME, fails=[]) self.assert_num_expected_unexpected_fails( output, num_expected=0, num_unexpected=0 )
[docs] def test_psdump_oneCorePhaseFails(self): fail_phase = self._set_last_core_phase_to_fail() output = self._ts.phase_statuses_dump() self.assert_core_phases(output, self._TESTNAME, fails=[fail_phase]) self.assert_num_expected_unexpected_fails( output, num_expected=0, num_unexpected=0 )
[docs] def test_psdump_oneCorePhaseFailsAbsentFromXFails(self): """One phase fails. There is an expected fails list, but that phase is not in it.""" fail_phase = self._set_last_core_phase_to_fail() xfails = expected_fails.ExpectedFails() xfails.add_failure( phase=self._NON_CORE_PHASE, expected_status=test_status.TEST_FAIL_STATUS ) output = self._ts.phase_statuses_dump(xfails=xfails) self.assert_status_of_phase( output, test_status.TEST_FAIL_STATUS, fail_phase, self._TESTNAME, xfail="no" ) self.assert_num_expected_unexpected_fails( output, num_expected=0, num_unexpected=0 )
[docs] def test_psdump_oneCorePhaseFailsInXFails(self): """One phase fails. That phase is in the expected fails list.""" fail_phase = self._set_last_core_phase_to_fail() xfails = expected_fails.ExpectedFails() xfails.add_failure( phase=fail_phase, expected_status=test_status.TEST_FAIL_STATUS ) output = self._ts.phase_statuses_dump(xfails=xfails) self.assert_status_of_phase( output, test_status.TEST_FAIL_STATUS, fail_phase, self._TESTNAME, xfail="expected", ) self.assert_num_expected_unexpected_fails( output, num_expected=1, num_unexpected=0 )
[docs] def test_psdump_oneCorePhasePassesInXFails(self): """One phase passes despite being in the expected fails list.""" xfail_phase = test_status.CORE_PHASES[-1] xfails = expected_fails.ExpectedFails() xfails.add_failure( phase=xfail_phase, expected_status=test_status.TEST_FAIL_STATUS ) output = self._ts.phase_statuses_dump(xfails=xfails) self.assert_status_of_phase( output, test_status.TEST_PASS_STATUS, xfail_phase, self._TESTNAME, xfail="unexpected", ) self.assert_num_expected_unexpected_fails( output, num_expected=0, num_unexpected=1 )
[docs] def test_psdump_skipPasses(self): """With the skip_passes argument, only non-passes should appear""" fail_phase = self._set_last_core_phase_to_fail() output = self._ts.phase_statuses_dump(skip_passes=True) self.assert_status_of_phase( output, test_status.TEST_FAIL_STATUS, fail_phase, self._TESTNAME, xfail="no" ) for phase in test_status.CORE_PHASES: if phase != fail_phase: self.assert_phase_absent(output, phase, self._TESTNAME)
[docs] def test_psdump_unexpectedPass_shouldBePresent(self): """Even with the skip_passes argument, an unexpected PASS should be present""" xfail_phase = test_status.CORE_PHASES[-1] xfails = expected_fails.ExpectedFails() xfails.add_failure( phase=xfail_phase, expected_status=test_status.TEST_FAIL_STATUS ) output = self._ts.phase_statuses_dump(skip_passes=True, xfails=xfails) self.assert_status_of_phase( output, test_status.TEST_PASS_STATUS, xfail_phase, self._TESTNAME, xfail="unexpected", ) for phase in test_status.CORE_PHASES: if phase != xfail_phase: self.assert_phase_absent(output, phase, self._TESTNAME)
if __name__ == "__main__": unittest.main()