blob: 9833c62f1fb5c42be27437d2e9453acbceebcaf6 [file] [view] [edit]
## Getting Started
This directory contains `libsycl` tests distributed in subdirectories based on
testing scope. `libsycl` uses LIT to configure and run its tests.
Please see the [Lit Command Guide](https://llvm.org/docs/CommandGuide/lit.html)
for more information about LIT.
## Prerequisites
* Target runtime(s) to execute tests on devices.
TODO: add link to liboffload instruction once they add it.
* Compiler & libsycl. Can be built following these
[instructions](/libsycl/docs/index.md).
## Run the tests
`libsycl` is integrated via `LLVM_ENABLE_RUNTIMES` and is not visible as a top
level target. The same is applicable to tests. To run `check-sycl` tests you need
to prepend `<build>/runtimes/runtimes-bins/` to the paths of all tests.
For example, to run all the `libsycl` tests you can do:
```bash
<build>/bin/llvm-lit <build>/runtimes/runtimes-bins/libsycl/test
```
To run an individual test, use the path to it instead.
If you are using `ninja` as your build system, you can run all the tests in the
`libsycl` testsuite as:
```bash
ninja -C <build>/runtimes/runtimes-bins check-sycl
```
## CMake parameters
These parameters can be used to configure tests:
`LIBSYCL_CXX_COMPILER` - path to compiler to use it for building tests.
`LIBSYCL_TEST_COMPILER_OPTIONS` - flags to be passed to `LIBSYCL_CXX_COMPILER` when
building libsycl tests.
`LLVM_LIT` - path to llvm-lit tool.
## Creating or modifying tests
### LIT feature checks
Following features can be passed to LIT via `REQUIRES`, `UNSUPPORTED`, etc.
filters to limit test execution to the specific environment.
#### Auto-detected features
The following features are automatically detected by `llvm-lit` by scanning the
environment:
* `any-device` - presence of at least 1 supported device;
* `any-device-is-gpu` - device type to be available;
* `any-device-is-level_zero` - backend to be available;
Note: the `sycl-ls` tool doesn't have an assigned feature since it is essential for
test configuration and is always available.
### llvm-lit parameters
The following options can be passed to the `llvm-lit` tool with `--param`
option to configure test execution:
* `libsycl_compiler` - full path to compiler to use.
* `extra_environment` - comma-separated list of variables with values to be
added to the test environment. Can be also set by the `LIT_EXTRA_ENVIRONMENT`
variable in CMake.
* `extra_system_environment` - comma-separated list of variables to be
propagated from the host environment to the test environment. Can be also set
by `LIT_EXTRA_SYSTEM_ENVIRONMENT` variable in CMake.
Example:
```bash
<build>/bin/llvm-lit --param libsycl_compiler=path/to/clang++ \
<build>/runtimes/runtimes-bins/libsycl/test
```