| name: benchmark | |
| returns: void | |
| description: | | |
| Creates a benchmark item that will be run when the benchmark target is | |
| run. The behavior of this function is identical to [[test]] | |
| except for: | |
| * benchmark() has no `is_parallel` keyword because benchmarks are not run in parallel | |
| * benchmark() does not automatically add the `MALLOC_PERTURB_` environment variable | |
| Defined benchmarks can be run in a backend-agnostic way by calling | |
| `meson test --benchmark` inside the build dir, or by using backend-specific | |
| commands, such as `ninja benchmark` or `msbuild RUN_TESTS.vcxproj`. | |
| notes: | |
| - Prior to 0.52.0 benchmark would warn that `depends` and | |
| `priority` were unsupported, this is incorrect. | |
| posargs: | |
| name: | |
| type: str | |
| description: The *unique* test id | |
| executable: | |
| type: exe | jar | external_program | file | custom_tgt | custom_idx | |
| description: | | |
| The program to execute. *(Since 1.4.0)* A CustomTarget is also accepted. | |
| kwargs: | |
| args: | |
| type: list[str | file | tgt] | |
| description: Arguments to pass to the executable | |
| env: | |
| type: env | list[str] | dict[str] | |
| description: | | |
| environment variables to set, such as `['NAME1=value1', | |
| 'NAME2=value2']`, or an [[@env]] object which allows more sophisticated | |
| environment juggling. *(Since 0.52.0)* A dictionary is also accepted. | |
| should_fail: | |
| type: bool | |
| default: false | |
| description: | | |
| when true the test is considered passed if the | |
| executable returns a non-zero return value (i.e. reports an error) | |
| suite: | |
| type: str | list[str] | |
| description: | | |
| `'label'` (or list of labels `['label1', 'label2']`) | |
| attached to this test. The suite name is qualified by a (sub)project | |
| name resulting in `(sub)project_name:label`. In the case of a list | |
| of strings, the suite names will be `(sub)project_name:label1`, | |
| `(sub)project_name:label2`, etc. | |
| timeout: | |
| type: int | |
| default: 30 | |
| description: | | |
| the amount of seconds the test is allowed to run, a test | |
| that exceeds its time limit is always considered failed, defaults to | |
| 30 seconds. *Since 0.57* if timeout is `<= 0` the test has infinite duration, | |
| in previous versions of Meson the test would fail with a timeout immediately. | |
| workdir: | |
| type: str | |
| description: | | |
| absolute path that will be used as the working directory | |
| for the test | |
| depends: | |
| type: list[build_tgt | custom_tgt] | |
| since: 0.46.0 | |
| description: | | |
| specifies that this test depends on the specified | |
| target(s), even though it does not take any of them as a command | |
| line argument. This is meant for cases where test finds those | |
| targets internally, e.g. plugins or globbing. Those targets are built | |
| before test is executed even if they have `build_by_default : false`. | |
| protocol: | |
| type: str | |
| since: 0.50.0 | |
| default: "'exitcode'" | |
| description: | | |
| specifies how the test results are parsed and can | |
| be one of `exitcode`, `tap`, or `gtest`. For more information about test | |
| harness protocol read [Unit Tests](Unit-tests.md). The following values are | |
| accepted: | |
| - `exitcode`: the executable's exit code is used by the test harness | |
| to record the outcome of the test). | |
| - `tap`: [Test Anything Protocol](https://www.testanything.org/). | |
| - `gtest` *(since 0.55.0)*: for Google Tests. | |
| - `rust` *(since 0.56.0)*: for native rust tests | |
| priority: | |
| type: int | |
| since: 0.52.0 | |
| default: 0 | |
| description: | | |
| specifies the priority of a test. Tests with a | |
| higher priority are *started* before tests with a lower priority. | |
| The starting order of tests with identical priorities is | |
| implementation-defined. The default priority is 0, negative numbers are | |
| permitted. | |
| verbose: | |
| type: bool | |
| since: 0.62.0 | |
| default: false | |
| description: | | |
| if true, forces the test results to be logged as if `--verbose` was passed | |
| to `meson test`. |