Tags: abhishekbelgaonkar23/Catch2
Tags
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 === 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 === 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 --- 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 === 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)
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 === 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 === 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 --- 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 === 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
PreviousNext