Files
mercury/tests/README
Mark Brown 55d0d482c6 Provide a more uniform interface to the test directories.
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.
1999-07-12 06:26:05 +00:00

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.