|
|
|
name: test
|
|
|
|
returns: void
|
|
|
|
description: |
|
|
|
|
Defines a test to run with the test harness. Takes two positional
|
|
|
|
arguments, the first is the name of the test and the second is the
|
|
|
|
executable to run. The executable can be an [[@exe]] object returned by
|
|
|
|
[[executable]] or an [[@external_program]] object] returned by
|
|
|
|
[[find_program]].
|
|
|
|
|
|
|
|
*(since 0.55.0)* When cross compiling, if an exe_wrapper is needed and
|
|
|
|
defined the environment variable `MESON_EXE_WRAPPER` will be set to
|
|
|
|
the string value of that wrapper (implementation detail: using
|
|
|
|
`mesonlib.join_args`). Test scripts may use this to run cross built
|
|
|
|
binaries. If your test needs `MESON_EXE_WRAPPER` in cross build
|
|
|
|
situations it is your responsibility to return code 77 to tell the
|
|
|
|
harness to report "skip".
|
|
|
|
|
|
|
|
By default, environment variable
|
|
|
|
[`MALLOC_PERTURB_`](http://man7.org/linux/man-pages/man3/mallopt.3.html)
|
|
|
|
is automatically set by `meson test` to a random value between 1..255.
|
|
|
|
This can help find memory leaks on configurations using glibc,
|
|
|
|
including with non-GCC compilers. However, this can have a performance
|
|
|
|
impact, and may fail a test due to external libraries whose internals
|
|
|
|
are out of the user's control. To check if this feature is causing an
|
|
|
|
expected runtime crash, disable the feature by temporarily setting
|
|
|
|
environment variable `MALLOC_PERTURB_=0`. While it's preferable to
|
|
|
|
only temporarily disable this check, if a project requires permanent
|
|
|
|
disabling of this check in meson.build do like:
|
|
|
|
|
|
|
|
```meson
|
|
|
|
nomalloc = environment({'MALLOC_PERTURB_': '0'})
|
|
|
|
|
|
|
|
test(..., env: nomalloc, ...)
|
|
|
|
```
|
|
|
|
|
|
|
|
In addition to running individual executables as test cases, `test()`
|
|
|
|
can also be used to invoke an external test harness. In this case,
|
|
|
|
it is best to use `verbose: true` *(since 0.62.0)* and, if supported
|
|
|
|
by the external harness, `protocol: 'tap'` *(since 0.50.0)*. This will
|
|
|
|
ensure that Meson logs each subtest as it runs, instead of including
|
|
|
|
the whole log at the end of the run.
|
|
|
|
|
|
|
|
Defined tests can be run in a backend-agnostic way by calling
|
|
|
|
`meson test` inside the build dir, or by using backend-specific
|
|
|
|
commands, such as `ninja test` or `msbuild RUN_TESTS.vcxproj`.
|
|
|
|
|
|
|
|
posargs_inherit: benchmark
|
|
|
|
kwargs_inherit: benchmark
|
|
|
|
|
|
|
|
kwargs:
|
|
|
|
is_parallel:
|
|
|
|
type: bool
|
|
|
|
default: true
|
|
|
|
description: |
|
|
|
|
when false, specifies that no other test must be
|
|
|
|
running at the same time as this test
|