Skip to content

Releases: catchorg/Catch2

v3.5.4

10 Apr 10:23
v3.5.4
b5373da
Compare
Choose a tag to compare

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_ts 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)

v3.5.3

01 Mar 21:16
v3.5.3
8ac8190
Compare
Choose a tag to compare

Fixes

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

Improvements

  • Restored compatibility with VS2017 (#2792, #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 (#2801)
  • Improved the static analysis mode to evaluate arguments to TEST_CASE and SECTION (#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, and 0787132fc82a75e3fb255aa9484ca1dc1eff2a30.

Miscellaneous

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

v3.5.2

15 Jan 13:15
v3.5.2
05e10df
Compare
Choose a tag to compare

Fixes

  • Fixed -Wsubobject-linkage in the Console reporter (#2794)
  • Fixed adding new CLI Options to lvalue parser using | (#2787)

v3.5.1

31 Dec 14:18
v3.5.1
f981c9c
Compare
Choose a tag to compare

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 (#2781)
  • Added CMake option to disable the build reproducibility settings (#2785)
  • Added log library linking to the Meson build (#2784)

v3.5.0

10 Dec 23:57
v3.5.0
53d0d91
Compare
Choose a tag to compare

Improvements

  • Introduced CATCH_CONFIG_PREFIX_MESSAGES to prefix only logging macros (#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 (#2737)
  • Stringification support for std::optional now also includes std::nullopt (#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 (#2551, #2766)
  • Compiling Catch2 for XBox should work out of the box (#2772)
    • Catch2 should automatically disable getenv when compiled for XBox.
  • Compiling Catch2 with exceptions disabled no longer triggers Wunused-function (#2726)
  • random Generators for integral types are now reproducible across different platforms
    • Unlike <random>, 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 (#2744)
  • Fixed missing include in catch_message.hpp (#2758)
  • Fixed CHECK_ELSE suppressing failure from uncaught exceptions(#2723)

Miscellaneous

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

v3.4.0

13 Jul 11:58
v3.4.0
6e79e68
Compare
Choose a tag to compare

3.4.0

Improvements

  • VectorEquals supports elements that provide only == and not != (#2648)
  • Catch2 supports compiling with IAR compiler (#2651)
  • Various small internal performance improvements
  • Various small internal compilation time improvements
  • XMLReporter now reports location info for INFO and WARN (#1251)
    • This bumps up the xml format version to 3
  • Documented that SKIP in generator constructor can be used to handle empty generator (#1593)
  • Added experimental static analysis support to TEST_CASE and SECTION macros (#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 (#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 (#2678)
  • Errors in TEST_CASE tags are now reported nicely (#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 (#2674, #2676)
  • meson build can disable building tests (#2693)
  • meson build properly sets meson version 0.54.1 as the minimal supported version (#2688)

v3.3.2

27 Feb 14:18
v3.3.2
3f0283d
Compare
Choose a tag to compare

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

v3.3.1

29 Jan 22:24
v3.3.1
2ab20a0
Compare
Choose a tag to compare

Improvements

  • Reduced allocations and improved performance
    • The exact improvements are dependent on your usage of Catch2.
    • For example running Catch2's SelfTest binary performs 8k less allocations.
    • The main improvement comes from smarter handling of SECTIONs, especially sibling SECTIONs

v3.3.0

22 Jan 19:57
v3.3.0
c837cb4
Compare
Choose a tag to compare

Improvements

  • Added MessageMatches exception matcher (#2570)
  • Added RangeEquals and UnorderedRangeEquals generic range matchers (#2377)
  • Added SKIP macro for skipping tests from within the test body (#2360)
    • All built-in reporters have been extended to handle it properly, whether your custom reporter needs changes depends on how it was written
    • skipTest reporter event is unrelated to this, and has been deprecated since it has practically no uses
  • Restored support for PPC Macs in the break-into-debugger functionality (#2619)
  • Made our warning suppression compatible with CUDA toolkit pre 11.5 (#2626)
  • Cleaned out some static analysis complaints

Fixes

  • Fixed macro redefinition warning when NVCC was reporting as MSVC (#2603)
  • Fixed throws in generator constructor causing the whole binary to abort (#2615)
    • Now it just fails the test
  • Fixed missing transitive include with libstdc++13 (#2611)

Miscellaneous

  • Improved support for dynamic library build with non-MSVC compilers on Windows (#2630)
  • When used as a subproject, Catch2 keeps its generated header in a separate directory from the main project (#2604)

v3.2.1

09 Dec 22:18
v3.2.1
ab6c737
Compare
Choose a tag to compare

Improvements

  • Fix the reworked decomposer to work with older (pre 9) GCC versions (#2571)
    • This required more significant changes to properly support C++20, there might be bugs.