ExecutablesTestCase

class lsst.utils.tests.ExecutablesTestCase(methodName='runTest')

Bases: unittest.case.TestCase

Test that executables can be run and return good status.

The test methods are dynamically created. Callers must subclass this class in their own test file and invoke the create_executable_tests() class method to register the tests.

Attributes Summary

TESTS_DISCOVERED

Methods Summary

assertExecutable(executable, root_dir, args, msg) Check an executable runs and returns good status.
create_executable_tests(ref_file, executables) Discover executables to test and create corresponding test methods.
setUpClass() Abort testing if automated test creation was enabled and no tests were found.
testSanity() Ensure that there is at least one test to be executed.

Attributes Documentation

TESTS_DISCOVERED = -1

Methods Documentation

assertExecutable(executable: str, root_dir: Optional[str] = None, args: Optional[Sequence[str]] = None, msg: Optional[str] = None) → None

Check an executable runs and returns good status.

Prints output to standard out. On bad exit status the test fails. If the executable can not be located the test is skipped.

Parameters:
executable : str

Path to an executable. root_dir is not used if this is an absolute path.

root_dir : str, optional

Directory containing executable. Ignored if None.

args : list or tuple, optional

Arguments to be provided to the executable.

msg : str, optional

Message to use when the test fails. Can be None for default message.

Raises:
AssertionError

The executable did not return 0 exit status.

classmethod create_executable_tests(ref_file: str, executables: Optional[Sequence[str]] = None) → None

Discover executables to test and create corresponding test methods.

Scans the directory containing the supplied reference file (usually __file__ supplied from the test class) to look for executables. If executables are found a test method is created for each one. That test method will run the executable and check the returned value.

Executable scripts with a .py extension and shared libraries are ignored by the scanner.

This class method must be called before test discovery.

Parameters:
ref_file : str

Path to a file within the directory to be searched. If the files are in the same location as the test file, then __file__ can be used.

executables : list or tuple, optional

Sequence of executables that can override the automated detection. If an executable mentioned here is not found, a skipped test will be created for it, rather than a failed test.

Examples

>>> cls.create_executable_tests(__file__)
classmethod setUpClass() → None

Abort testing if automated test creation was enabled and no tests were found.

testSanity() → None

Ensure that there is at least one test to be executed. This allows the test runner to trigger the class set up machinery to test whether there are some executables to test.