52 lines
1.5 KiB
Markdown
52 lines
1.5 KiB
Markdown
# How to build tests
|
|
|
|
To build the existing tests, simply run the following:
|
|
|
|
```
|
|
mkdir build && cd build
|
|
cmake ..
|
|
cmake --build .
|
|
```
|
|
|
|
# How to run tests
|
|
|
|
Specific test executables will be placed in the `bin` subdirectory of the build directory. These can be run individually.
|
|
|
|
Alternatively the `all_test` executable in the build directory can be run which automatically runs all test executables.
|
|
|
|
# How to generate coverage
|
|
|
|
First, when building the tests, make sure `COVERAGE=ON` as follows:
|
|
|
|
```
|
|
cmake -D COVERAGE=ON ..
|
|
```
|
|
|
|
Then after running all tests, run the following for `gcovr` coverage report:
|
|
|
|
```
|
|
mkdir coverage
|
|
gcovr --root '../..' --filter '\.\./\.\./include/.*' --html-details 'coverage/index.html' .
|
|
```
|
|
|
|
# Building specific binaries
|
|
|
|
To build a specific binary, for example `eval_point_test`, use the following:
|
|
|
|
```
|
|
cmake --build . --target eval_point_test
|
|
```
|
|
|
|
# Running specific tests
|
|
|
|
First, to list available tests use the following (using `eval_point_test` as the example executable):
|
|
|
|
```
|
|
./bin/eval_point_test --gtest_list_tests
|
|
```
|
|
|
|
Next, using the `--gtest_filter` option, specific tests can be run using pattern matching. `?` matches a single character, `*` matches any substring, `:` seperates two patterns, and `-` at the beginning of a pattern makes it a negative pattern. Following is an example to only run `Basic` tests and ensure `BasicPathMemoizer` tests are not run:
|
|
|
|
```
|
|
./bin/eval_point_test --gtest_filter='*Basic*:-*BasicPathMemoizer*'
|
|
```
|