Tags: jakemcc/Catch2
Tags
v3.1.1 --- Improvements --- * Added `Catch::getSeed` function that user code can call to retrieve current rng-seed * Better detection of compiler support for `-ffile-prefix-map` (catchorg#2517) * Catch2's shared libraries now have `SOVERSION` set (catchorg#2516) * `catch2/catch_all.hpp` convenience header no longer transitively includes `windows.h` (catchorg#2432, catchorg#2526) --- Fixes --- * Fixed compilation on Universal Windows Platform * Fixed compilation on VxWorks (catchorg#2515) * Fixed compilation on Cygwin (catchorg#2540) * Remove unused variable in reporter registration (catchorg#2538) * Fixed some symbol visibility issues with dynamic library on Windows (catchorg#2527) * Suppressed `-Wuseless-cast` warnings in `REQUIRE_THROWS*` macros (catchorg#2520, catchorg#2521) * This was triggered when the potentially throwing expression evaluates to `void` * Fixed "warning: storage class is not first" with `nvc++` (catchorg#2533) * Fixed handling of `DL_PATHS` argument to `catch_discover_tests` on MacOS (catchorg#2483) * Suppressed `*-avoid-c-arrays` clang-tidy warning in `TEMPLATE_TEST_CASE` (catchorg#2095, catchorg#2536) --- Miscellaneous --- * Fixed CMake install step for Catch2 build as dynamic library (catchorg#2485) * Raised minimum CMake version to 3.10 (catchorg#2523) * Expect the minimum CMake version to increase once more in next few releases. * Whole bunch of doc updates and fixes * catchorg#1444, catchorg#2497, catchorg#2547, catchorg#2549, and more * Added support for building Catch2 with Meson (catchorg#2530, catchorg#2539)
v2.13.10 --- Fixes --- * Fixed issue with `catch_discover_tests` when there is multiple of 256 tests (catchorg#2401, catchorg#2503) * Catch2-provided `main` and `wmain` are explicitly marked as `__cdecl` when compiled with MSVC (catchorg#2486, catchorg#2487) * Improved break-into-debugger behaviour for ARM Macs. It should now be possible to step execution after the break (catchorg#2422) * Replaced deprecated `std::aligned_storage` (catchorg#2419, catchorg#2420)
v3.1.0 --- Improvements * Improved suppression of `-Wparentheses` for older GCCs * Turns out that even GCC 9 does not properly handle `_Pragma`s in the C++ frontend. * Added type constraints onto `random` generator (catchorg#2433) * These constraints copy what the standard says for the underlying `std::uniform_int_distribution` * Suppressed -Wunused-variable from nvcc (catchorg#2306, catchorg#2427) * Suppressed -Wunused-variable from MinGW (catchorg#2132) * Added All/Any/NoneTrue range matchers (catchorg#2319) * These check that all/any/none of boolean values in a range are true. * The JUnit reporter now normalizes classnames from C++ namespaces to Java-like namespaces (catchorg#2468) * This provides better support for other JUnit based tools. * The Bazel support now understands `BAZEL_TEST` environment variable (catchorg#2459) * The `CATCH_CONFIG_BAZEL_SUPPORT` configuration option is also still supported. * Returned support for compiling Catch2 with GCC 5 (catchorg#2448) * This required removing inherited constructors from Catch2's internals. * I recommend updating to a newer GCC anyway. * `catch_discover_tests` now has a new options for setting library load path(s) when running the Catch2 binary (catchorg#2467) --- Fixes * Fixed crash when listing listeners without any registered listeners (catchorg#2442) * Fixed nvcc compilation error in constructor benchmarking helper (catchorg#2477) * Catch2's CMakeList supports pre-3.12 CMake again (catchorg#2428) * The gain from requiring CMake 3.12 was very minor, but y'all should really update to newer CMake --- Miscellaneous * Fixed SelfTest build on MinGW (catchorg#2447) * The in-repo conan recipe exports the CMake helper (catchorg#2460) * Added experimental CMake script to showcase using test case sharding together with CTest * Compared to `catch_discover_tests`, it supports very limited number of options and customization * Added documentation page on best practices when running Catch2 tests * Catch2 can be built as a dynamic library (catchorg#2397, catchorg#2398) * Note that Catch2 does not have visibility annotations, and you are responsible for ensuring correct visibility built into the resulting library.
v3.0.1 === (Potentially) Breaking changes === * **Catch2 now uses statically compiled library as its distribution model** * **Including `catch.hpp` no longer works** * **Catch2 now uses C++14 as the minimum support language version** * `ANON_TEST_CASE` has been removed, use `TEST_CASE` with no arguments instead (catchorg#1220) * `--list*` commands no longer have non-zero return code (catchorg#1410) * `--list-test-names-only` has been removed (catchorg#1190) * You should use verbosity-modifiers for `--list-tests` instead * `--list*` commands are now piped through the reporters * The top-level reporter interface provides default implementation that works just as the old one * XmlReporter outputs a machine-parseable XML * `TEST_CASE` description support has been removed * If the second argument has text outside tags, the text will be ignored. * Hidden test cases are no longer included just because they don't match an exclusion tag * Previously, a `TEST_CASE("A", "[.foo]")` would be included by asking for `~[bar]`. * `PredicateMatcher` is no longer type erased. * This means that the type of the provided predicate is part of the `PredicateMatcher`'s type * `SectionInfo` no longer contains section description as a member (catchorg#1319) * You can still write `SECTION("ShortName", "Long and wordy description")`, but the description is thrown away * The description type now must be a `const char*` or be implicitly convertible to it * The `[!hide]` tag has been removed. * Use `[.]` or `[.foo]` instead. * Lvalues of composed matchers cannot be composed further * Uses of `REGISTER_TEST_CASE` macro need to be followed by a semicolon * This does not change `TEST_CASE` and friends in any way * `IStreamingReporter::IsMulti` member function was removed * This is _very_ unlikely to actually affect anyone, as it was default-implemented in the interface, and only used internally * Various classes not designed for user-extension have been made final * `ListeningReporter` is now `final` * Concrete Matchers (e.g. `UnorderedEquals` vector matcher) are now `final` * All Generators are now `final` * Matcher namespacing has been redone * Matcher types are no longer in deeply nested namespaces * Matcher factory functions are no longer brought into `Catch` namespace * This means that all public-facing matcher-related functionality is now in `Catch::Matchers` namespace * Defining `CATCH_CONFIG_MAIN` will no longer create main in that TU. * Link with `libCatch2Main.a`, or the proper CMake/pkg-config target * If you want to write custom main, include `catch2/catch_session.hpp` * `CATCH_CONFIG_EXTERNAL_INTERFACES` has been removed. * You should instead include the appropriate headers as needed. * `CATCH_CONFIG_IMPL` has been removed. * The implementation is now compiled into a static library. * Event Listener interface has changed * `TestEventListenerBase` was renamed to `EventListenerBase` * `EventListenerBase` now directly derives from `IStreamingReporter`, instead of deriving from `StreamingReporterBase` * `GENERATE` decays its arguments (catchorg#2012, catchorg#2040) * This means that `str` in `auto str = GENERATE("aa", "bb", "cc");` is inferred to `char const*` rather than `const char[2]`. * `--list-*` flags write their output to file specified by the `-o` flag * Many changes to reporter interfaces * With the exception of the XmlReporter, the outputs of first party reporters should remain the same * New pair of events were added * One obsolete event was removed * The base class has been renamed * The built-in reporter class hierarchy has been redone * Catch2 generates a random seed if one hasn't been specified by the user * The short flag for `--list-tests`, `-l`, has been removed. * This is not a commonly used flag and does not need to use up valuable single-letter space. * The short flag for `--list-tags`, `-t`, has been removed. * This is not a commonly used flag and does not need to use up valuable single-letter space. * The `--colour` option has been replaced with `--colour-mode` option === Improvements === * Matchers have been extended with the ability to use different signatures of `match` (catchorg#1307, catchorg#1553, catchorg#1554, catchorg#1843) * This includes having templated `match` member function * See the [rewritten Matchers documentation](matchers.md#top) for details * Catch2 currently provides _some_ generic matchers, but there should be more before final release of v3 * `IsEmpty`, `SizeIs` which check that the range has specific properties * `Contains`, which checks whether a range contains a specific element * `AllMatch`, `AnyMatch`, `NoneMatch` range matchers, which apply matchers over a range of elements * Significant compilation time improvements * including `catch_test_macros.hpp` is 80% cheaper than including `catch.hpp` * Some runtime performance optimizations * In all tested cases the v3 branch was faster, so the table below shows the speedup of v3 to v2 at the same task <a id="v3-runtime-optimization-table"></a> | task | debug build | release build | |:------------------------------------------- | ------------:| -------------:| | Run 1M `REQUIRE(true)` | 1.10 ± 0.01 | 1.02 ± 0.06 | | Run 100 tests, 3^3 sections, 1 REQUIRE each | 1.27 ± 0.01 | 1.04 ± 0.01 | | Run 3k tests, no names, no tags | 1.29 ± 0.01 | 1.05 ± 0.01 | | Run 3k tests, names, tags | 1.49 ± 0.01 | 1.22 ± 0.01 | | Run 1 out of 3k tests no names, no tags | 1.68 ± 0.02 | 1.19 ± 0.22 | | Run 1 out of 3k tests, names, tags | 1.79 ± 0.02 | 2.06 ± 0.23 | * POSIX platforms use `gmtime_r`, rather than `gmtime` when constructing a date string (catchorg#2008, catchorg#2165) * `--list-*` flags write their output to file specified by the `-o` flag (catchorg#2061, catchorg#2163) * `Approx::operator()` is now properly `const` * Catch2's internal helper variables no longer use reserved identifiers (catchorg#578) * `--rng-seed` now accepts string `"random-device"` to generate random seed using `std::random_device` * Catch2 now supports test sharding (catchorg#2257) * You can ask for the tests to be split into N groups and only run one of them. * This greatly simplifies parallelization of tests in a binary through external runner. * The embedded CLI parser now supports repeatedly callable lambdas * A lambda-based option parser can opt into being repeatedly specifiable. * Added `STATIC_CHECK` macro, similar to `STATIC_REQUIRE` (catchorg#2318) * When deferred tu runtime, it behaves like `CHECK`, and not like `REQUIRE`. * You can have multiple tests with the same name, as long as other parts of the test identity differ (catchorg#1915, catchorg#1999, catchorg#2175) * Test identity includes test's name, test's tags and and test's class name if applicable. * Added new warning, `UnmatchedTestSpec`, to error on test specs with no matching tests * The `-w`, `--warn` warning flags can now be provided multiple times to enable multiple warnings * The case-insensitive handling of tags is now more reliable and takes up less memory * Test case and assertion counting can no longer reasonably overflow on 32 bit systems * The count is now kept in `uint64_t` on all platforms, instead of using `size_t` type. * The `-o`, `--out` output destination specifiers recognize `-` as stdout * You have to provide it as `--out=-` to avoid CLI error about missing option * The new reporter specification also recognizes `-` as stdout * Multiple reporters can now run at the same time and write to different files (catchorg#1712, catchorg#2183) * To support this, the `-r`, `--reporter` flag now also accepts optional output destination * For full overview of the semantics of using multiple reporters, look into the reporter documentation * To enable the new syntax, reporter names can no longer contain `::`. * Console colour support has been rewritten and significantly improved * The colour implementation based on ANSI colour codes is always available * Colour implementations respect their associated stream * previously e.g. Win32 impl would change console colour even if Catch2 was writing to a file * The colour API is resilient against changing evaluation order of expressions * The associated CLI flag and compile-time configuration options have changed * For details see the docs for command-line and compile-time Catch2 configuration * Added a support for Bazel integration with `XML_OUTPUT_FILE` env var (catchorg#2399) * This has to be enabled during compilation. * Added `--skip-benchmarks` flag to run tests without any `BENCHMARK`s (catchorg#2392, catchorg#2408) * Added option to list all listeners in the binary via `--list-listeners` === Fixes === * The `INFO` macro no longer contains superfluous semicolon (catchorg#1456) * The `--list*` family of command line flags now return 0 on success (catchorg#1410, catchorg#1146) * Various ways of failing a benchmark are now counted and reporter properly * The ULP matcher now handles comparing numbers with different signs properly (catchorg#2152) * Universal ADL-found operators should no longer break decomposition (catchorg#2121) * Reporter selection is properly case-insensitive * Previously it forced lower cased name, which would fail for reporters with upper case characters in name * The cumulative reporter base stores benchmark results alongside assertion results * Catch2's SE handling should no longer interferes with ASan on Windows (catchorg#2334) * Fixed Windows console colour handling for tests that redirect stdout (catchorg#2345) * Fixed issue with the `random` generators returning the same value over and over again === Other changes === * `CATCH_CONFIG_DISABLE_MATCHERS` no longer exists. * If you do not want to use Matchers in a TU, do not include their header. * `CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER` no longer exists. * `StringMaker` specializations for `<chrono>` are always provided * Catch2's CMake now provides 2 targets, `Catch2` and `Catch2WithMain`. * `Catch2` is the statically compiled implementation by itself * `Catch2WithMain` also links in the default main * Catch2's pkg-config integration also provides 2 packages * `catch2` is the statically compiled implementation by itself * `catch2-with-main` also links in the default main * Passing invalid test specifications passed to Catch2 are now reported before tests are run, and are a hard error. * Running 0 tests (e.g. due to empty binary, or test spec not matching anything) returns non-0 exit code * Flag `--allow-running-no-tests` overrides this behaviour. * `NoTests` warning has been removed because it is fully subsumed by this change. * Catch2's compile-time configuration options (`CATCH_CONFIG_FOO`) can be set through CMake options of the same name * They use the same semantics as C++ defines, including the `CATCH_CONFIG_NO_FOO` overrides, * `-DCATCH_CONFIG_DEFAULT_REPORTER=compact` changes default reporter to "compact" * `-DCATCH_CONFIG_NO_ANDROID_LOGWRITE=ON` forces android logwrite to off * `-DCATCH_CONFIG_ANDROID_LOGWRITE=OFF` does nothing (the define will not exist)
v2.13.9 --- Fixes --- * Fixed issue with `-#` (filename-as-tag) flag when `__FILE__` expands into filename without directories (catchorg#2328, catchorg#2393) * Fixed `CAPTURE` macro not being variadic when disabled through `CATCH_CONFIG_DISABLE` (catchorg#2316, catchorg#2378)
v2.13.8 --- Fixes --- * Made `Approx::operator()` const (catchorg#2288) * Improved pkg-config files (catchorg#2284) * Fixed warning suppression leaking out of Catch2 when compiled with clang.exe (catchorg#2280) * The macro-generated names for things like `TEST_CASE` no longer create reserved identifiers (catchorg#2336) --- Improvements --- * Clang-tidy should no longer warn about missing virtual dispatch in `FilterGenerator`'s constructor (catchorg#2314)
v2.13.7 --- Fixes --- * Added missing `<iterator>` include in benchmarking. (catchorg#2231) * Fixed noexcept build with benchmarking enabled (catchorg#2235) * Fixed build for compilers with C++17 support but without C++17 library support (catchorg#2195) * JUnit only uses 3 decimal places when reporting durations (catchorg#2221) * `!mayfail` tagged tests are now marked as `skipped` in JUnit reporter output (catchorg#2116)
-- 2.13.6 -- --- Fixes --- * Disabling all signal handlers no longer breaks compilation (catchorg#2212, catchorg#2213) --- Miscellaneous --- * `catch_discover_tests` should handle escaped semicolon (`;`) better (catchorg#2214, catchorg#2215)
PreviousNext