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 [[@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, ...)
  ```

  By default, the environment variables `ASAN_OPTIONS`, `UBSAN_OPTIONS`,
  and `MSAN_OPTIONS` are set to enable aborting on detected violations and to
  give a backtrace. To suppress this, `ASAN_OPTIONS`, `UBSAN_OPTIONS`, or
  `MSAN_OPTIONS` can be set in the environment.

  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
