Releases: catchorg/Catch2
Releases · catchorg/Catch2
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 tomax_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
SelfTest
target can be built through Bazel (#2857)
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
- This manifested itself when generating random
- 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
incatch_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
Fixes
- Fixed OOB access when computing filename tag (from the
-#
flag) for file without extension (#2798) - Fixed the linking against
log
on Android to bePRIVATE
(#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
andSECTION
(#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
, and0787132fc82a75e3fb255aa9484ca1dc1eff2a30
.
- This is required for compiling
Miscellaneous
v3.5.2
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
v3.5.0
Improvements
- Introduced
CATCH_CONFIG_PREFIX_MESSAGES
to prefix only logging macros (#2544)- This means
INFO
,UNSCOPED_INFO
,WARN
andCAPTURE
.
- This means
- Section hints in static analysis mode are now
const
- This prevents Clang-Tidy from complaining about
misc-const-correctness
.
- This prevents Clang-Tidy from complaining about
from_range
generator supports C arrays and ranges that require ADL (#2737)- Stringification support for
std::optional
now also includesstd::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
, ...)
- Unlike
random
Generators forfloat
anddouble
are now reproducible across different platformslong 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 andPRE_TEST
discovery mode (#2747) catch_discover_tests
supports multi-config CMake generator inPRE_TEST
discovery mode (#2739, #2746)
v3.4.0
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
andSECTION
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?
- Unlike plain
Fixes
- Fixed
assertionStarting
events being sent after the expr is evaluated (#2678) - Errors in
TEST_CASE
tags are now reported nicely (#2650)
Miscellaneous
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
, andTEMPLATE_LIST_TEST_*
macros.
Contains
,RangeEquals
andUnorderedRangeEquals
matchers now support ranges with iterator + sentinel pair- Added
IsNaN
matcher- Unlike
REQUIRE(isnan(x))
,REQUIRE_THAT(x, IsNaN())
shows you the value ofx
.
- Unlike
- 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
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
SECTION
s, especially siblingSECTION
s
v3.3.0
Improvements
- Added
MessageMatches
exception matcher (#2570) - Added
RangeEquals
andUnorderedRangeEquals
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)