testcode.py

testcode.py - a command-line interface to testcode.

Synopsis

testcode.py [options] [action1 [action2…]]

Description

Run a set of actions on a set of tests.

Requires two configuration files, jobconfig and userconfig. See testcode documentation for further details.

testcode.py provides a command-line interface to testcode, a simple framework for comparing output from (principally numeric) programs to previous output to reveal regression errors or miscompilation.

Actions

‘’run’’ is th default action.

compare
compare set of test outputs from a previous testcode run against the benchmark outputs.
diff
diff set of test outputs from a previous testcode run against the benchmark outputs.
make-benchmarks
create a new set of benchmarks and update the userconfig file with the new benchmark id. Also runs the ‘run’ action unless the ‘compare’ action is also given.
recheck
compare set of test outputs from a previous testcode run against benchmark outputs and rerun any failed tests.
run
run a set of tests and compare against the benchmark outputs.
tidy
Remove files from previous testcode runs from the test directories.

Options

-h, --help show this help message and exit
-b BENCHMARK, --benchmark=BENCHMARK
 Set the file ID of the benchmark files. If BENCHMARK is in the format t:ID, then the test files with the corresponding ID are used. This allows two sets of tests to be compared. Default: specified in the [user] section of the userconfig file.
-c CATEGORY, --category=CATEGORY
 Select the category/group of tests. Can be specified multiple times. Wildcards or parent directories can be used to select multiple directories by their path. Default: use the _default_ category if run is an action unless make-benchmarks is an action. All other cases use the _all_ category by default. The _default_ category contains all tests unless otherwise set in the jobconfig file.
-e EXECUTABLE, --executable=EXECUTABLE
 Set the executable(s) to be used to run the tests. Can be a path or name of an option in the userconfig file, in which case all test programs are set to use that value, or in the format program_name=value, which affects only the specified program. Only relevant to the run action. Default: exe variable set for each program listed in the userconfig file.
-i, --insert Insert the new benchmark into the existing list of benchmarks in userconfig rather than overwriting it. Only relevant to the make-benchmarks action. Default: False.
--jobconfig=JOBCONFIG
 Set path to the job configuration file. Default: jobconfig.
--job-option=JOB_OPTION
 Override/add setting to jobconfig. Takes three arguments. Format: section_name option_name value. Default: none.
--older-than=OLDER_THAN
 Set the age (in days) of files to remove. Only relevant to the tidy action. Default: 14 days.
-p NPROCS, --processors=NPROCS
 Set the number of processors to run each test on. Only relevant to the run action. Default: run tests as serial jobs.
-q, --quiet Print only minimal output. Default: False.
-s QUEUE_SYSTEM, --submit=QUEUE_SYSTEM
 Submit tests to a queueing system of the specified type. Only PBS system is currently implemented. Only relevant to the run action. Default: none.
-t TEST_ID, --test-id=TEST_ID
 Set the file ID of the test outputs. If TEST_ID is in the format b:ID, then the benchmark files with the corresponding ID are used. This allows two sets of benchmarks to be compared. Default: unique filename based upon date if running tests and most recent test_id if comparing tests.
--total-processors=TOT_NPROCS
 Set the total number of processors to use to run as many tests as possible at the same time. Relevant only to the run option. Default: run all tests concurrently run if –submit is used; run tests sequentially otherwise.
--userconfig=USERCONFIG
 Set path to the user configuration file. Default: userconfig.
--user-option=USER_OPTION
 Override/add setting to userconfig. Takes three arguments. Format: section_name option_name value. Default: none.
-v, --verbose Increase verbosity of output. Can be specified up to two times. The default behaviour is to print out the test and its status. (See the –quiet option to suppress even this.) Specify -v or –verbose once to show (if relevant) which data values caused warnings or failures. Specify -v or –verbose twice to see all (external) commands run and all data extracted from running the tests. Using the maximum verbosity level is highly recommended for debugging.

Exit status

1 if one or more tests fail (run and compare actions only) and 0 otherwise.

License

Modified BSD License. See LICENSE in the source code for more details.

Bugs

Contact James Spencer (j.spencer@imperial.ac.uk) regarding bug reports, suggestions for improvements or code contributions.