Skip to content

Tags: abhishekbelgaonkar23/Catch2

Tags

v3.7.1

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` (catchorg#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 (catchorg#2905)

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

v3.7.0

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` (catchorg#2885, catchorg#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 (catchorg#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 (catchorg#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

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. (catchorg#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. (catchorg#1210, catchorg#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 (catchorg#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 (catchorg#2833, catchorg#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. (catchorg#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` (catchorg#2861)
* `SelfTest` target can be built through Bazel (catchorg#2857)

v3.5.4

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 (catchorg#2852)
* Fixed regression where decomposing assertion with const instance of `std::foo_ordering` would not compile

--- Improvements ---
* Reintroduced support for GCC 5 and 6 (catchorg#2836)
  * As with VS2017, if they start causing trouble again, they will be dropped again.
* Added workaround for targetting newest MacOS (Sonoma) using GCC (catchorg#2837, catchorg#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 (catchorg#2831)
* `DL_PATHS` in `catch_discover_tests` now supports multiple arguments (catchorg#2852, catchorg#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 (catchorg#2845)

v3.5.3

Verified

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

=== Fixes ===
* Fixed OOB access when computing filename tag (from the `-#` flag) for file without extension (catchorg#2798)
* Fixed the linking against `log` on Android to be `PRIVATE` (catchorg#2815)
* Fixed `Wuseless-cast` in benchmarking internals (catchorg#2823)

=== Improvements ===
* Restored compatibility with VS2017 (catchorg#2792, catchorg#2822)
  * The baseline for Catch2 is still C++14 with some reasonable workarounds for specific compilers, so if VS2017 starts acting up again, the support will be dropped again.
* Suppressed clang-tidy's `bugprone-chained-comparison` in assertions (catchorg#2801)
* Improved the static analysis mode to evaluate arguments to `TEST_CASE` and `SECTION` (catchorg#2817)
  * Clang-tidy should no longer warn about runtime arguments to these macros being unused in static analysis mode.
  * Clang-tidy can warn on issues involved arguments to these macros.
* Added support for literal-zero detectors based on `consteval` constructors
  * This is required for compiling `REQUIRE((a <=> b) == 0)` against MSVC's stdlib.
  * Sadly, MSVC still cannot compile this assertion as it does not implement C++20 correctly.
  * You can use `clang-cl` with MSVC's stdlib instead.
  * If for some godforsaken reasons you want to understand this better, read the two relevant commits: [`dc51386b9fd61f99ea9c660d01867e6ad489b403`](catchorg@dc51386), and [`0787132fc82a75e3fb255aa9484ca1dc1eff2a30`](catchorg@0787132).

=== Miscellaneous ===
* Disabled tests for FP random generator reproducibility on non-SSE2 x86 targets (catchorg#2796)
* Modified the in-tree Conan recipe to support Conan 2 (catchorg#2805)

v3.5.2

Verified

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

=== Fixes ===
* Fixed `-Wsubobject-linkage` in the Console reporter (catchorg#2794)
* Fixed adding new CLI Options to lvalue parser using `|` (catchorg#2787)

v3.5.1

Verified

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

=== Improvements ===
* Significantly improved performance of the CLI parsing.
  * This includes the cost of preparing the CLI parser, so Catch2's binaries start much faster.

=== Miscellaneous ===
* Added support for Bazel modules (catchorg#2781)
* Added CMake option to disable the build reproducibility settings (catchorg#2785)
* Added `log` library linking to the Meson build (catchorg#2784)

v3.5.0

Verified

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

=== Improvements ===
* Introduced `CATCH_CONFIG_PREFIX_MESSAGES` to prefix only logging macros (catchorg#2544)
  * This means `INFO`, `UNSCOPED_INFO`, `WARN` and `CAPTURE`.
* Section hints in static analysis mode are now `const`
  * This prevents Clang-Tidy from complaining about `misc-const-correctness`.
* `from_range` generator supports C arrays and ranges that require ADL (catchorg#2737)
* Stringification support for `std::optional` now also includes `std::nullopt` (catchorg#2740)
* The Console reporter flushes output after writing benchmark runtime estimate.
  * This means that you can immediately see for how long the benchmark is expected to run.
* Added workaround to enable compilation with ICC 19.1 (catchorg#2551, catchorg#2766)
* Compiling Catch2 for XBox should work out of the box (catchorg#2772)
  * Catch2 should automatically disable getenv when compiled for XBox.
* Compiling Catch2 with exceptions disabled no longer triggers `Wunused-function` (catchorg#2726)
* **`random` Generators for integral types are now reproducible across different platforms**
  * Unlike `<rando>`, Catch2's generators also support 1 byte integral types (`char`, `bool`, ...)
* **`random` Generators for `float` and `double` are now reproducible across different platforms**
  * `long double` varies across different platforms too much to be reproducible
  * This guarantee applies only to platforms with IEEE 754 floats.

=== Fixes ===
* UDL declaration inside Catch2 are now strictly conforming to the standard
  * `operator "" _a` is UB, `operator ""_a` is fine. Seriously.
* Fixed `CAPTURE` tests failing to compile in C++23 mode (catchorg#2744)
* Fixed missing include in `catch_message.hpp` (catchorg#2758)
* Fixed `CHECK_ELSE` suppressing failure from uncaught exceptions(catchorg#2723)

=== Miscellaneous ===
* The documentation for specifying which tests to run through commandline has been completely rewritten (catchorg#2738)
* Fixed installation when building Catch2 with meson (catchorg#2722, catchorg#2742)
* Fixed `catch_discover_tests` when using custom reporter and `PRE_TEST` discovery mode (catchorg#2747)
* `catch_discover_tests` supports multi-config CMake generator in `PRE_TEST` discovery mode (catchorg#2739, catchorg#2746)

v3.4.0

Verified

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

--- Improvements ---
* `VectorEquals` supports elements that provide only `==` and not `!=` (catchorg#2648)
* Catch2 supports compiling with IAR compiler (catchorg#2651)
* Various small internal performance improvements
* Various small internal compilation time improvements
* XMLReporter now reports location info for INFO and WARN (catchorg#1251)
  * This bumps up the xml format version to 3
* Documented that `SKIP` in generator constructor can be used to handle empty  generator (catchorg#1593)
* Added experimental static analysis support to `TEST_CASE` and `SECTION` macros (catchorg#2681)
  * The two macros are redefined in a way that helps the SA tools reason about the possible paths through a test case with sections.
  * The support is controlled by the `CATCH_CONFIG_EXPERIMENTAL_STATIC_ANALYSIS_SUPPORT` option and autodetects clang-tidy and Coverity.
* `*_THROWS`, `*_THROWS_AS`, etc now suppress warning coming from `__attribute__((warn_unused_result))` on GCC  (catchorg#2691)
  * Unlike plain `[[nodiscard]]`, this warning is not silenced by void cast. WTF GCC?

--- Fixes ---
* Fixed `assertionStarting` events being sent after the expr is evaluated (catchorg#2678)
* Errors in `TEST_CASE` tags are now reported nicely (catchorg#2650)

--- Miscellaneous ---
* Bunch of improvements to `catch_discover_tests`
  * Added DISCOVERY_MODE option, so the discovery can happen either post build or pre-run.
  * Fixed handling of semicolons and backslashes in test names (catchorg#2674, catchorg#2676)
* meson build can disable building tests (catchorg#2693)
* meson build properly sets meson version 0.54.1 as the minimal supported version (catchorg#2688)

v3.3.2

Verified

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

=== Improvements ===
* Further reduced allocations
  * The compact, console, TAP and XML reporters perform less allocations in various cases
  * Removed 1 allocation per entered `SECTION`/`TEST_CASE`.
  * Removed 2 allocations per test case exit, if stdout/stderr is captured
* Improved performance
  * Section tracking is 10%-25% faster than in v3.3.0
  * Assertion handling is 5%-10% faster than in v3.3.0
  * Test case registration is 1%-2% faster than in v3.3.0
  * Tiny speedup for registering listeners
  * Tiny speedup for `CAPTURE`, `TEST_CASE_METHOD`, `METHOD_AS_TEST_CASE`, and `TEMPLATE_LIST_TEST_*` macros.
* `Contains`, `RangeEquals` and `UnorderedRangeEquals` matchers now support ranges with iterator + sentinel pair
* Added `IsNaN` matcher
  * Unlike `REQUIRE(isnan(x))`, `REQUIRE_THAT(x, IsNaN())` shows you the value of `x`.
* Suppressed `declared_but_not_referenced` warning for NVHPC (=2637)

=== Fixes ===
* Fixed performance regression in section tracking introduced in v3.3.1
  * Extreme cases would cause the tracking to run about 4x slower than in 3.3.0