mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-22 21:03:53 +00:00
Estimated hours taken: 9 Provide a more uniform interface to the test directories. Before this change, the tests directory as well as direct descendents had `runtests' scripts to execute the tests. These would run `mmake', which in turn would recursively run `mmake' in any subdirectories. The subdirectories did not have their own `runtests' scripts. This change adds a `runtests' script to those subdirectories that did not have them before. The scripts have the same meaning as they did previously---run all tests in the current directory and below, and return a status of 0 only if all tests pass. The rationale for this change is so that each directory in the tests is treated the same, regardless of whether it is a top-level directory or not. This means, for example, that any test directory can be used as an argument to the `--test-dir' option to tools/bootcheck. This change also links tests/general/accumulator into the automated testing suite. tests/README: Update comments. tests/Mmake.common: Introduce new target dependencies. Targets of the form `foo' depend on the targets `foo_local' and `foo_subdirs'. tests/subdir_runtests: New script to recursively call runtests scripts in subdirectories. Most of the code for this script originally came from tests/runtests. tests/shutdown: tests/startup: Use `realclean_local' as a target instead of `realclean', since the subdirectories will be handled by other runtests scripts. tests/runtests: tests/debugger/runtests: tests/general/runtests: tests/hard_coded/runtests: Use the new script to run tests in the subdirectories, rather than doing a recursive mmake. Make sure that non-zero return values are propagated upwards where appropriate. tests/debugger/declarative/runtests: tests/hard_coded/typeclasses/runtests: tests/hard_coded/sub-modules/runtests: New scripts to handle running tests in the subdirectories. tests/debugger/Mmakefile: tests/general/Mmakefile: tests/hard_coded/Mmakefile: Add `*_subdirs' targets that do a recursive Mmake. Change the existing targets to `*_local' ones. tests/warnings/Mmakefile: Manually add the extra dependencies, since this Mmakefile does not include tests/Mmake.common.
56 lines
2.0 KiB
Plaintext
56 lines
2.0 KiB
Plaintext
The Mercury test suite is (dis)organized into a directory hierarchy.
|
|
Each subdirectory has a script named "runtests" that runs the tests
|
|
in that subdirectory; these indicate the presence of any errors by
|
|
returning a nonzero exit status. The runtests script in each directory
|
|
invokes the runtests scripts in all subdirectories, and propagates
|
|
any nonzero exit status upwards.
|
|
|
|
Both the bootcheck script and the nightly script use the main runtests
|
|
script to run all the tests.
|
|
|
|
benchmarks
|
|
This directory contains Mercury versions of the benchmarks.
|
|
These tests work by comparing the output of the Mercury and
|
|
the NU-Prolog versions.
|
|
|
|
debugger
|
|
This directory is for testing mdb, the Mercury debugger.
|
|
Programs are compiled with deep tracing turned on. The
|
|
tests in this directory are not performed if the base grade
|
|
is `jump' or `fast'.
|
|
|
|
debugger/declarative
|
|
This directory is for testing the declarative debugging
|
|
features of mdb.
|
|
|
|
general
|
|
This directory is for general test cases.
|
|
(It might be a good idea to split this into tests
|
|
of particular features and regression tests that check
|
|
for old bugs. But for the moment, just about everything
|
|
goes in here.)
|
|
These tests work by comparing the output of the Mercury and
|
|
the NU-Prolog versions.
|
|
|
|
hard_coded
|
|
This directory is for tests of features that don't work in
|
|
NU-Prolog. The expected output of the program has to be
|
|
hard-coded in a hand-written `.exp' file, rather having the
|
|
`.exp' file be generated automatically using NU-Prolog.
|
|
|
|
valid
|
|
This directory is for test cases that are not complete
|
|
programs. We just check that the files compile.
|
|
|
|
invalid
|
|
This directory is for test cases that are invalid
|
|
programs. We check that the files do *not* compile.
|
|
|
|
warnings
|
|
This directory is for tests of compiler warnings. These work by
|
|
comparing the warnings emitted by the compiler with those given
|
|
in the hand-written `.exp' file.
|
|
|
|
To regenerate the expected output files for the benchmark and general
|
|
directories, execute the "generate_exp" script in this directory.
|