blob: 4ae69b7919a87d1f4f89ff652ee1d4288c4dd1e9 [file] [log] [blame] [view]
# C++ API Tests
In this folder live the tests for PyTorch's C++ API (formerly known as
autogradpp). They use the [Catch2](https://github.com/catchorg/Catch2) test
framework.
## CUDA Tests
The way we handle CUDA tests is by separating them into a separate `TEST_CASE`
(e.g. we have `optim` and `optim_cuda` test cases in `optim.cpp`), and giving
them the `[cuda]` tag. Then, inside `main.cpp` we detect at runtime whether
CUDA is available. If not, we disable these CUDA tests by appending `~[cuda]`
to the test specifications. The `~` disables the tag.
One annoying aspect is that Catch only allows filtering on test cases and not
sections. Ideally, one could have a section like `LSTM` inside the `RNN` test
case, and give this section a `[cuda]` tag to only run it when CUDA is
available. Instead, we have to create a whole separate `RNN_cuda` test case and
put all these CUDA sections in there.
## Integration Tests
Integration tests use the MNIST dataset. You must download it by running the
following command from the PyTorch root folder:
```shell
$ python tools/download_mnist.py -d test/cpp/api/mnist
```