Unit testing environment for SWI-Prolog and SICStus Prolog. For usage,
please visit https://www.swi-prolog.org/pldoc/package/plunit.
set_test_options(+Options)- Specifies how to deal with test suites. Defined options are:
- load +Load
- Whether or not the tests must be loaded. Values are
never, always, normal (only if not optimised)
- run(+When)
- When the tests are run. Values are
manual, make
or make(all).
- format(+Mode)
- Currently one of
tty or log. tty uses terminal
control to overwrite successful tests, allowing the
user to see the currently running tests and output
from failed tests. This is the default of the output
is a tty. log prints a full log of the executed
tests and their result and is intended for non-interactive
usage.
- output(+When)
- If
always, emit all output as it is produced, if never,
suppress all output and if on_failure, emit the output
if the test fails.
- show_blocked(+Bool)
- Show individual blocked tests during the report.
- occurs_check(+Mode)
- Defines the default for the
occurs_check flag during
testing.
- cleanup(+Bool)
- If
true (default =false), cleanup report at the end
of run_tests/1. Used to improve cooperation with
memory debuggers such as dmalloc.
- jobs(Num)
- Number of jobs to use for concurrent testing. Default
is one, implying sequential testing.
- timeout(+Seconds)
- Set timeout for each individual test. This acts as a
default that may be overuled at the level of units or
individual tests. A timeout of 0 or negative is handled
as inifinite.
begin_tests(+UnitName:atom) is det
begin_tests(+UnitName:atom, Options) is det- Start a test-unit. UnitName is the name of the test set. the
unit is ended by :-
end_tests(UnitName).
end_tests(+Name) is det- Close a unit-test module.
- To be done
- - Run tests/clean module?
- - End of file?
run_tests is semidet
run_tests(+TestSet) is semidet
run_tests(+TestSet, +Options) is semidet- Run tests and report about the results. The predicate run_tests/0
runs all known tests that are not blocked. The predicate run_tests/1
takes a specification of tests to run.
The predicate run_tests/2 is synchronized. Concurrent testing may
be achieved using the relevant options. See
set_test_options/1. Options are passed to set_test_options/1. In
addition the following options are processed:
- summary(-Summary)
- Unify Summary do a dict holding the keys below. The value of
these keys is an integer describing the number of tests. If
this option is given, run_tests/2 does not fail if some tests
failed.
- total
- passed
- failed
- timeout
- blocked
- Arguments:
-
| TestSet | - is either a single specification or a list of
specifications. Each single specification is either the name of a
test-unit or a term <test-unit>:<test>, denoting a single test
within a unit. If TestSet is all, all known tests are executed. |
running_tests is det- Print the currently running test.
current_test(?Unit, ?Test, ?Line, ?Body, ?Options) is nondet- True when a test with the specified properties is loaded.
current_test_unit(?Unit, ?Options) is nondet- True when a Unit is a current unit test declared with Options.
test_report(+What) is det- Produce reports on test results after the run. Currently only
supports
fixme for What.
load_test_files(+Options) is det- Load .plt test-files related to loaded source-files. Options is
currently ignored.
user:message_hook(+Severity, +Message, +Lines) is semidet[multifile]- Redefine printing some messages. It appears SICStus has no way
to get multiple messages at the same line, so we roll our own.
As there is a lot pre-wired and checked in the SICStus message
handling we cannot reuse the lines. Unless I miss something ...
make_unit_module(+Name, -ModuleName) is det
unit_module(+Name, -ModuleName) is det
Re-exported predicates
The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.
begin_tests(+UnitName:atom) is det
begin_tests(+UnitName:atom, Options) is det- Start a test-unit. UnitName is the name of the test set. the
unit is ended by :-
end_tests(UnitName).
run_tests is semidet
run_tests(+TestSet) is semidet
run_tests(+TestSet, +Options) is semidet- Run tests and report about the results. The predicate run_tests/0
runs all known tests that are not blocked. The predicate run_tests/1
takes a specification of tests to run.
The predicate run_tests/2 is synchronized. Concurrent testing may
be achieved using the relevant options. See
set_test_options/1. Options are passed to set_test_options/1. In
addition the following options are processed:
- summary(-Summary)
- Unify Summary do a dict holding the keys below. The value of
these keys is an integer describing the number of tests. If
this option is given, run_tests/2 does not fail if some tests
failed.
- total
- passed
- failed
- timeout
- blocked
- Arguments:
-
| TestSet | - is either a single specification or a list of
specifications. Each single specification is either the name of a
test-unit or a term <test-unit>:<test>, denoting a single test
within a unit. If TestSet is all, all known tests are executed. |
run_tests is semidet
run_tests(+TestSet) is semidet
run_tests(+TestSet, +Options) is semidet- Run tests and report about the results. The predicate run_tests/0
runs all known tests that are not blocked. The predicate run_tests/1
takes a specification of tests to run.
The predicate run_tests/2 is synchronized. Concurrent testing may
be achieved using the relevant options. See
set_test_options/1. Options are passed to set_test_options/1. In
addition the following options are processed:
- summary(-Summary)
- Unify Summary do a dict holding the keys below. The value of
these keys is an integer describing the number of tests. If
this option is given, run_tests/2 does not fail if some tests
failed.
- total
- passed
- failed
- timeout
- blocked
- Arguments:
-
| TestSet | - is either a single specification or a list of
specifications. Each single specification is either the name of a
test-unit or a term <test-unit>:<test>, denoting a single test
within a unit. If TestSet is all, all known tests are executed. |