tree 6fba754f78be9a9466df9f609d5c95ab3bb5288b
parent 4e9bbd7c20ad0aca01403c6be99e5d4e606d17ff
author Scott Todd <scotttodd@google.com> 1640111916 -0800
committer GitHub <noreply@github.com> 1640111916 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJhwh8tCRBK7hj4Ov3rIwAA8G4IABjEST9pLqOLo13gZltXHXic
 bDuHeaPSD6i9tbzCd3cSsgMH4piQt/Z3bZhO0CG7qMmDdIuIHSNIbYFhEKfuTJQw
 jE9oNxgL3s0ml/rH3X4VNOPGr10L3Qt0TuxfuXQVqUnjKX5x5fY1JmHxRxm4ZwPv
 ift3De+izSCI8B5A4t6RziJVaBren6i+/moRQBos8p021MIvZUTvTDGXOgunNNsq
 f0fofCZv8IrMIsZlrgsbl9jh62gMd31r6i7MibpHG10L2rKJGKecqnCT+3HI87me
 zETyhf+49h46GKuem5apsKbniLD2Phf8lqyZv5r+X+vsRlvDYY/LykDB5K0CNy8=
 =1n8W
 -----END PGP SIGNATURE-----
 

Refactor the HAL CTS for out of tree / individual drivers. (#7887)

Fixes https://github.com/google/iree/issues/4643

This refactors the Hardware Abstraction Layer's Conformance Test Suite into a set of libraries and parameterized test suites that can be instantiated for individual HAL drivers using a new CMake function. This way, we can filter tests/drivers within the build system and can support drivers that are not added to the global test registry.

The tests are still written as googletest [Value-Parameterized Tests](https://google.github.io/googletest/advanced.html#value-parameterized-tests), but they are now _abstract tests_ as well. The CMake function creates a concrete implementation of each test in the suite using a template file. Here is an example of a generated test file:

```c++
// clang-format off
#define IREE_CTS_TEST_FILE_PATH "iree/hal/cts/descriptor_set_layout_test.h"
#define IREE_CTS_TEST_CLASS_NAME DescriptorSetLayoutTest
#define IREE_CTS_DRIVER_NAME "vmvx"
// clang-format on

#include IREE_CTS_TEST_FILE_PATH

#include "iree/hal/cts/cts_test_base.h"
#include "iree/testing/gtest.h"

namespace iree {
namespace hal {
namespace cts {

INSTANTIATE_TEST_SUITE_P(CTS, IREE_CTS_TEST_CLASS_NAME,
                         ::testing::Values(IREE_CTS_DRIVER_NAME),
                         GenerateTestName());

}  // namespace cts
}  // namespace hal
}  // namespace iree
```

(I referenced https://crascit.com/2017/04/18/generated-sources-in-cmake-builds/ for guidance on generating files from templates in CMake)

This also drops support for running these tests through Bazel. Support could be added back, but the file and test generation is sufficiently weird that I'd rather not support both build systems. I also think we have sufficient CI coverage for the HAL in open source (where nearly all HAL development happens) using CMake that Bazel support won't be very useful.