Fixes
- Multiple fixes in
catch_discover_tests:- Fixed
<target>_TESTSvariable accumulating JSON fragments alongside test names.- This was introduced during the refactoring in last release.
- Fixed
<target>_TESTSvariable fromcatch_discover_testsnot escaping test names to be properly parsed by CMake.- This means that e.g. test names with semicolons will not be split into multiple partial test names.
- This bug has existed since the first version of the script.
- Fixed
TEST_PREFIX/TEST_SUFFIXargs having leading/trailing whitespace stripped.
- Fixed
- Added workaround for Clang 20-21 compile error with
TEMPLATE_PRODUCT_TEST_CASE(#3115, #3173)
Improvements
- Verbosity option is now handled per reporter.
- The standalone
--verbosityflag is propagated to all reporters as default, just like--colour-mode.
- The standalone
- The JSON reporter considers verbosity when listing tests.
- Another set of performance improvements for
catch_discover_testsperformance- The newest version can register about 3k tests in 1 second, up from 1k previously.
- The initial
TEST_CASEregistration is slightly faster. - Reduced overhead from first instantiating
BENCHMARKmachinery in a TU. - Improved compilation speed when multiple templated test case macros use the same types.
- Rewrote implementation of the string matchers
- Case-sensitive matching (the default) is significantly faster.
- Case-insensitive matching is faster in most cases.
- Added optimizer barrier to calls into benchmarks without return values
- This limits the optimizations compiler can perform between calls into the benchmarked function, improving the accuracy.
- Added warning that checks for using sharding without deterministic test order (#3186)