nihtest-case
—
test case format for nihtest
nihtest(1) is a testing tool. It uses
.test files as input. This man page describes the
format of these test files.
Lines beginning with “#” are comments.
The following commands are recognized. The
return
and args
commands
must appear exactly once, the others are optional.
arguments
[argument ...]
- Run the program with command line arguments args.
Shell style quoting is supported.
description
text
- Describes the purpose of the test.
directory
name create [result]
- Describe directory name.
create and result can be
either “<>” if the directory is expected to exist, or
“{}” if it isn't. create specifies the
state before the test is run, result the state
afterwards. If result is omitted, it defaults to
create.
environment-clear
- Only variables explicitly set or passed through are included in the
environment passed to the tested program.
environment-passthrough
variable ...
- Passes the named environment variables from the environment
nihtest(1) is run in to the tested
program.
environment-set
variable value
- Set the environment variable variable to
value.
environment-unset
variable ...
- Removes the named environment variables.
features
feature ...
- Only run test if all
features are present,
otherwise skip it. The features are extracted from a top-level
config.h file. If the string
FOO
is defined in the file, the feature
FOO
is assumed to be available, otherwise not. See
also the description of top-build-directory
in
nihtest-config(5).
file
name in [out]
- The arguments in and out
specify the contents of the file name in the test
directory before and after the program is run, respectively. If
out is omitted, the file is expected to remain
unchanged.
“{}” specifies that the file does not exist (i.
e. that it is created or deleted by the program).
For “<inline>” the contents of the file
are taken from the test case, up to a line consisting of
“end-of-inline-data”. If both in and
out are “<inline>”, the input
data comes first. Otherwise the argument specifies the name of the file
to copy or compare against.
mkdir
name
- Create directory name in the test directory. This
directive is deprecated, use
directory
name <> instead.
precheck
command [argument ...]
- If command exits with non-zero status, skip the
test.
preload
object
- Pre-load the shared object object before running the
program.
This is not supported on macOS and Windows, where tests with
preload
will be skipped.
program
name
- Run name. See the description of
arguments
above for its command line arguments. If
this directive is omitted, default-program
from
nihtest.conf is run.
read-only
name
- The file or directory name will be made
read-only.
return
exit-code
- exit-code is the expected exit code (usually 0 on
success).
set-modification-time
file time
- Set the modification of file in the sandbox to
time, which can be either in ISO-8601 format or
seconds since Unix epoch.
stderr
[file]
- Specify the expect standard error output (stderr). If
file is given, the output is compared with that
file, otherwise the expected text is taken from the following lines of the
test case, up to a line consisting of
“end-of-inline-data”.
stderr-replace
pattern replacement
- Run regular expression replacement over the standard error output and the
expected output as provided by
stderr
before
comparing them. pattern is the match expression,
replacement is the replacement expression. In the
replacement expression, “$1” to “$9” are
replaced with the content of the corresponding “(...)” match
in the pattern. See
re_format(7) for details.
stdin
[file]
- If file is given, standard input (stdin) is
redirected from this file, which means the program has direct access to
the file, including the ability to seek within it.
Otherwise the text provided to the program via a pipe is taken
from the test case, up to a line consisting of
“end-of-inline-data”.
stdout
[file]
- Specify the expect standard output (stdout). If file
is given, the output is compared with that file, otherwise the expected
text is taken from the following lines of the test case, up to a line
consisting of “end-of-inline-data”.
stdout-replace
pattern replacement
- Run regular expression replacement over the standard output and the
expected output as provided by
stdout
before
comparing them. See stderr-replace
for
details.
test-case-source
filename
- Use filename to refer to test case in error
messages. This is useful if the test case is created by a script.
working-directory
directory
- Run the program in the subdirectory directory inside
the sandbox. The directory will be created if it doesn't exist.