Skip to content

Tags: catchorg/Catch2

Tags

v3.11.0

Toggle v3.11.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.11.0

=== Fixes ===
* Fixed building on non-desktop GDK platforms (#3029)
* Fixed message macros being susceptible to race in specific scenario (#3031)
* Catch2's SEH filter will call the previously installed filter after reporting the error (#3033)

=== Improvements ===
* Handling of scoped messages (e.g. `CAPTURE`) is a bit faster.
* Better out-of-the-box support for QNX (#2953)
* Improved performance of assertions by up-to 10%
  * Release mode assertion fast-path sees the biggest improvement.
* Faster processing of non-escaped strings in `--invisibles` mode.
* Added support for Bazel's `TEST_RANDOM_SEED` env var (#3021)
* Added support for Bazel's `TEST_PREMATURE_EXIT_FILE` env var (#3020)
  * This creates a file that is deleted if the tests exit normally, but stays around if the process dies unexpectedly.
  * This functionality is also exposed through CLI as `--premature-exit-guard-file`

=== Miscellaneous ===
* **[Tuple.app](https://tuple.app/catch2) has sponsored Catch2**

v3.10.0

Toggle v3.10.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.10.0

=== Fixes ===
* pkg-config files will take `DESTDIR` env var into account when selecting install destination (#3006, #3019)
* Changed `filter` to store the provided predicate by value (#3002, #3005)
  * This is done to avoid dangling-by-default behaviour when `filter` is used inside `GENERATE_COPY`/`GENERATE_REF`.

=== Improvements ===
* Escaping XML and JSON output is faster when the strings do not need escaping.
  * The improvement starts at about 3x throughput, up to 10x for long strings.
* Message macros (`INFO`, `CAPTURE`, `WARN`, `SUCCEED`, etc) are now thread safe.

v3.9.1

Toggle v3.9.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.9.1

=== Fixes ===
* Fixed bad error reporting for multiple nested assertions (#1292)
* Fixed W4702 (unreachable code) in the polyfill for std::unreachable (#3007)
* Fixed decomposition of assertions comparing enum-backed bitfields (#3001)
* Fixed StringMaker specialization for `time_point<system_clock>` with non-default duration type (#2685)

=== Improvements ===
* Exceptions thrown during stringification of decomposed expression no longer fail the assertion (#2980)
* The selection logic for `CATCH_TRAP` prefers `__builtin_debugtrap` on all platforms when Catch2 is compiled with Clang

v3.9.0

Toggle v3.9.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.9.0

=== Improvements ===
* **Added experimental opt-in support for thread safe assertions**
  * Read the documentation for full details
* **The default test run order has been changed to random**
* Passing assertions are significantly faster when the reporter does not ask for `assertionEnded` events on passing assertions.
  * This is the default behaviour of e.g. Console or Compact reporter
  * Simple `REQUIRE(true)` is 60% faster in Release and 80% faster in Debug build configuration
  * Simple `REQUIRE_NOTHROW` is 230% faster in Release and 430% faster in Debug build configuration
  * Simple `REQUIRE_THROWS` is ~3% faster in Release and 20% faster in Debug build configuration (throwing introduces enough overhead that the optimizations inside Catch2 are mostly irrelevant)
* Small (2-5%) improvement if the reporter asks for `assertionEnded` events for passing assertions.
* The exit code constants are part of the Session API. (#2955, #2976)
* Suppressed unsigned integer overflow checking in locations with intended overflow (#2965)
* Reporters flush output after writing metadata, e.g. rng seed (#2964)
* Added unreachable after `FAIL` and `SKIP` macros (#2941)
  * This allows the compiler to understand that the execution does not continue past the macro, and avoids warnings.
* Added fast path for `assertionStarting` event when no reporter requires it
  * For backwards compatibility, this fast path is opt-in
  * A reporter can opt in by changing its `ReporterPreferences::shouldReportAllAssertionStarts`
* Improved last seen source location tracking to be more precise
  * This is used when reporting unexpected exceptions from tests

=== Fixes ===
* Fixed formatting of tags with more than 100 tests in the default `--list-tags` output (#2963)
* Fixed Clang-Tidy's `readability-static-accessed-through-instance` in tests
* Fixed most of Clang-Tidy's `cppcoreguidelines-avoid-non-const-global-variables` (#2582)
* The lifetime of scoped messages now strictly obeys their scope (#1759, #2019, #2959)
  * Previously Catch2 would try to keep them around during unexpected exception, to provide helpful context.
  * The amount of surprises the irregularities caused was not worth the occasional utility provided.
* `TEMPLATE_TEST_CASE_SIG` can handle signatures consisting of only types (#2680, #2995)
* Moved `catch_test_run_info.hpp` up from `internal/` subfolder into the main one (#2972)

=== Miscellaneous ===
* pkg-config files are now generated at install time (#2979)
  * This fixes missing debug suffix in library names
  * This fixes install prefix mismatch between build config and actuall installation

v3.8.1

Toggle v3.8.1's commit message

Verified

This tag was signed with the committer’s verified signature.
ChrisThrasher Chris Thrasher
v3.8.1

=== Fixes ===
* Fixed bug where catch_discover_tests fails when no TEST_CASEs are present (#2962)
* Fixed Clang 19 -Wc++20-extensions warning (#2968)

v3.8.0

Toggle v3.8.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.8.0

=== Improvements ===
* Added `std::initializer_list` overloads for `(Unordered)RangeEquals` matcher (#2915, #2919)
* Added explicit casts to silence GCC's `Wconversion` (#2875)
* Made the use of `builtin_constant_p` tricks in assertion macros configurable (#2925)
  * It is used to prod GCC-like compilers into providing warnings for the asserted expressions, but the compilers miscompile it annoyingly often.
* Cleaned out Clang-Tidy's `performance-enum-size` warnings
* Added support for using `from_range` generator with iterators with `value_type = const T` (#2926)
  * This is not correct `value_type` typedef, but it is used in the wild and the change does not make the code meaningfully worse.

=== Fixes ===
* Fixed crash when stringifying pre-1970 (epoch) dates on Windows (#2944)

=== Miscellaneous ===
* Fixes and improvements for `catch_discover_tests` CMake helper
  * Removed redundant `CTEST_FILE` param when creating the indirection file for `PRE_TEST` discovery mode (#2936)
  * Rewrote the test discovery logic to use output from the JSON reporter
    * This means that `catch_discover_tests` now requires CMake 3.19 or newer
  * Added `ADD_TAGS_AS_LABELS` option. If specified, each CTest test will be labeled with corrensponding Catch2's test tag
* Bumped up the minimum required CMake version to build Catch2 to 3.16
* Meson build now provides option to avoid installing Catch2
* Bazel build is moved to Bzlmod.

v3.7.1

Toggle v3.7.1's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.7.1

=== Improvements ===
* Applied the JUnit reporter's optimization from last release to the SonarQube reporter
* Suppressed `-Wuseless-cast` in `CHECK_THROWS_MATCHES` (#2904)
* Standardize exit codes for various failures
  * Running no tests is now guaranteed to exit with 2 (without the `--allow-running-no-tests` flag)
  * All tests skipped is now always 4 (...)
  * Assertion failures are now always 42
  * and so on

=== Fixes ===
* Fixed out-of-bounds access when the arg parser encounters single `-` as an argument (#2905)

=== Miscellaneous ===
* Added `catch_config_prefix_messages.hpp` to meson build (#2903)
* `catch_discover_tests` now supports skipped tests (#2873)
  * You can get the old behaviour by calling `catch_discover_tests` with `SKIP_IS_FAILURE` option.

v3.7.0

Toggle v3.7.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.7.0

=== Improvements ===
* Slightly improved compile times of benchmarks
* Made the resolution estimation in benchmarks slightly more precise
* Added new test case macro, `TEST_CASE_PERSISTENT_FIXTURE` (#2885, #1602)
  * Unlike `TEST_CASE_METHOD`, the same underlying instance is used for all partial runs of that test case
* **MASSIVELY** improved performance of the JUnit reporter when handling successful assertions (#2897)
  * For 1 test case and 10M assertions, the new reporter runs 3x faster and uses up only 8 MB of memory, while the old one needs 7 GB of memory.
* Reworked how output redirects works.
  * Combining a reporter writing to stdout with capturing reporter no longer leads to the capturing reporter seeing all of the other reporter's output.
  * The file based redirect no longer opens up a new temporary file for each partial test case run, so it will not run out of temporary files when running many tests in single process.

=== Miscellaneous ===
* Better documentation for matchers on thrown exceptions (`REQUIRE_THROWS_MATCHES`)
* Improved `catch_discover_tests`'s handling of environment paths (#2878)
  * It won't reorder paths in `DL_PATHS` or `DYLD_FRAMEWORK_PATHS` args
  * It won't overwrite the environment paths for test discovery

v3.6.0

Toggle v3.6.0's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.6.0

=== Fixes ===
* Fixed Windows ARM64 build by fixing the preprocessor condition guarding use `_umul128` intrinsic.
* Fixed Windows ARM64EC build by removing intrinsic pragma it does not understand. (#2858)
  * Why doesn't the x64-emulation build mode understand x64 pragmas? Don't ask me, ask the MSVC guys.
* Fixed the JUnit reporter sometimes crashing when reporting a fatal error. (#1210, #2855)
  * The binary will still exit, but through the original error, rather than secondary error inside the reporter.
  * The underlying fix applies to all reporters, not just the JUnit one, but only JUnit was currently causing troubles.

=== Improvements ===
* Disable `-Wnon-virtual-dtor` in Decomposer and Matchers (#2854)
* `precision` in floating point stringmakers defaults to `max_digits10`.
  * This means that floating point values will be printed with enough precision to disambiguate any two floats.
* Column wrapping ignores ansi colour codes when calculating string width (#2833, #2849)
  * This makes the output much more readable when the provided messages contain colour codes.

=== Miscellaneous ===
* Conan support improvements
  * `compatibility_cppstr` is set to False. (#2860)
    * This means that Conan won't let you mix library and project with different C++ standard settings.
  * The implementation library CMake target name through Conan is properly set to `Catch2::Catch2` (#2861)
* `SelfTest` target can be built through Bazel (#2857)

v3.5.4

Toggle v3.5.4's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
horenmar Martin Hořeňovský
v3.5.4

--- Fixes ---
* Fixed potential compilation error when asked to generate random integers whose type did not match `std::(u)int*_t`.
  * This manifested itself when generating random `size_t`s on MacOS
* Added missing outlined destructor causing `Wdelete-incomplete` when compiling against libstdc++ in C++23 mode (#2852)
* Fixed regression where decomposing assertion with const instance of `std::foo_ordering` would not compile

--- Improvements ---
* Reintroduced support for GCC 5 and 6 (#2836)
  * As with VS2017, if they start causing trouble again, they will be dropped again.
* Added workaround for targetting newest MacOS (Sonoma) using GCC (#2837, #2839)
* `CATCH_CONFIG_DEFAULT_REPORTER` can now be an arbitrary reporter spec
  * Previously it could only be a plain reporter name, so it was impossible to compile in custom arguments to the reporter.
* Improved performance of generating 64bit random integers by 20+%

--- Miscellaneous ---
* Significantly improved Conan in-tree recipe (#2831)
* `DL_PATHS` in `catch_discover_tests` now supports multiple arguments (#2852, #2736)
* Fixed preprocessor logic for checking whether we expect reproducible floating point results in tests.
* Improved the floating point tests structure to avoid `Wunused` when the reproducibility tests are disabled (#2845)