All Versions
21
Latest Version
Avg Release Cycle
36 days
Latest Release
379 days ago

Changelog History
Page 2

  • v2.12.1 Changes

    April 21, 2020

    ๐Ÿ›  Fixes

    • ๐Ÿ‘ Vector matchers now support initializer list literals better

    ๐Ÿ‘Œ Improvements

    • โž• Added support for ^ (bitwise xor) to CHECK and REQUIRE
  • v2.12.0 Changes

    April 21, 2020

    ๐Ÿ‘Œ Improvements

    • โœ… Running tests in random order (--order rand) has been reworked significantly (#1908)
      • Given same seed, all platforms now produce the same order
      • Given same seed, the relative order of tests does not change if you select only a subset of them
    • ๐Ÿ‘ Vector matchers support custom allocators (#1909)
    • ๐Ÿ‘ | and & (bitwise or and bitwise and) are now supported in CHECK and REQUIRE
      • The resulting type must be convertible to bool

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fixed computation of benchmarking column widths in ConsoleReporter (#1885, #1886)
    • Suppressed clang-tidy's cppcoreguidelines-pro-type-vararg in assertions (#1901)
      • It was a false positive trigered by the new warning support workaround
    • ๐Ÿ›  Fixed bug in test specification parser handling of OR'd patterns using escaping (#1905)

    Miscellaneous

    • Worked around IBM XL's codegen bug (#1907)
      • It would emit code for destructors of temporaries in an unevaluated context
    • ๐Ÿ‘Œ Improved detection of stdlib's support for std::uncaught_exceptions (#1911)
  • v2.11.3 Changes

    March 19, 2020

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fixed compilation error caused by lambdas in assertions under MSVC
  • v2.11.2 Changes

    March 19, 2020

    ๐Ÿ‘Œ Improvements

    • โš  GCC and Clang now issue warnings for suspicious code in assertions (#1880)
      • E.g. REQUIRE( int != unsigned int ) will now issue mixed signedness comparison warning
      • This has always worked on MSVC, but it now also works for GCC and current Clang versions
    • โœ… Colorization of "Test filters" output should be more robust now
    • --wait-for-keypress now also accepts never as an option (#1866)
    • Reporters no longer round-off nanoseconds when reporting benchmarking results (#1876)
    • ๐Ÿ‘ Catch2's debug break now supports iOS while using Thumb instruction set (#1862)
    • โœ… It is now possible to customize benchmark's warm-up time when running the test binary (#1844)
      • --benchmark-warmup-time {ms}
    • ๐Ÿ‘‰ User can now specify how Catch2 should break into debugger (#1846)

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Fixes missing <random> include in benchmarking (#1831)
    • ๐Ÿ›  Fixed missing <iterator> include in benchmarking (#1874)
    • ๐Ÿ“š Hidden test cases are now also tagged with [!hide] as per documentation (#1847)
    • Detection of whether libc provides std::nextafter has been improved (#1854)
    • Detection of wmain no longer incorrectly looks for WIN32 macro (#1849)
      • Now it just detects Windows platform
    • Composing already-composed matchers no longer modifies the partially-composed matcher expression
      • This bug has been present for the last ~2 years and nobody reported it
  • v2.11.1 Changes

    December 28, 2019

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ’ฅ Breaking into debugger is supported on iOS (#1817)
    • ๐Ÿ— google-build-using-namespace clang-tidy warning is suppressed (#1799)

    ๐Ÿ›  Fixes

    • ๐Ÿ Clang on Windows is no longer assumed to implement MSVC's traditional preprocessor (#1806)
    • ObjectStorage now behaves properly in const contexts (#1820)
    • GENERATE_COPY(a, b) now compiles properly (#1809, #1815)
    • ๐Ÿ‘ Some more cleanups in the benchmarking support
  • v2.11.0 Changes

    November 15, 2019

    ๐Ÿ‘Œ Improvements

    • JUnit reporter output now contains more details in case of failure (#1347, #1719)
    • โž• Added SonarQube Test Data reporter (#1738)
      • It is in a separate header, just like the TAP, Automake, and TeamCity reporters
    • range generator now allows floating point numbers (#1776)
    • Reworked part of internals to increase throughput

    ๐Ÿ›  Fixes

    • ๐Ÿ‘ The single header version should contain full benchmarking support (#1800)
    • ๐Ÿ“œ [.foo] is now properly parsed as [.][foo] when used on the command line (#1798)
    • ๐Ÿ›  Fixed compilation of benchmarking on platforms where steady_clock::period is not std::nano (#1794)
  • v2.10.2 Changes

    October 24, 2019

    ๐Ÿ‘Œ Improvements

    • Catch2 will now compile on platform where INFINITY is double (#1782)

    ๐Ÿ›  Fixes

    • โš  Warning suppressed during listener registration will no longer leak

    Miscellaneous

    • ๐Ÿš€ From this release forward released headers could be signed also by
      • KeyID 81E7 0B71 7FFB 27AF DB45 F520 90BB FF12 0F9C 087B
  • v2.10.1 Changes

    October 20, 2019

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ Catch2 now guards itself against min and max macros from windows.h (#1772)
    • โœ… Templated tests will now compile with ICC (#1748)
    • WithinULP matcher now uses scientific notation for stringification (#1760)

    ๐Ÿ›  Fixes

    • โœ… Templated tests no longer trigger -Wunused-templates (#1762)
    • Suppressed clang-analyzer false positive in context getter (#1230, #1735)

    Miscellaneous

    • ๐Ÿ— CMake no longer prohibits in-tree build when Catch2 is used as a subproject (#1773, #1774)
  • v2.10.0 Changes

    October 13, 2019

    ๐Ÿ›  Fixes

    • TEMPLATE_LIST_TEST_CASE now properly handles non-copyable and non-movable types (#1729)
    • ๐Ÿ›  Fixed compilation error on Solaris caused by a system header defining macro TT (#1722, #1723)
    • REGISTER_ENUM will now fail at compilation time if the registered enum is too large
    • Removed use of std::is_same_v in C++17 mode (#1757)
    • ๐Ÿ›  Fixed parsing of escaped special characters when reading test specs from a file (#1767, #1769)

    ๐Ÿ‘Œ Improvements

    • โœ… Trailing and leading whitespace in test/section specs are now ignored.
    • Writing to Android debug log now uses __android_log_write instead of __ android_log_print
    • ๐ŸŒฒ Android logging support can now be turned on/off at compile time (#1743)
      • The toggle is CATCH_CONFIG_ANDROID_LOGWRITE
    • โž• Added a generator that returns elements of a range
      • Use via from_range(from, to) or from_range(container)
    • โž• Added support for CRTs that do not provide std::nextafter (#1739)
      • They must still provide global nextafter{f,l,}
      • Enabled via CATCH_CONFIG_GLOBAL_NEXTAFTER
    • Special cased Approx(inf) not to match non-infinite values
      • Very strictly speaking this might be a breaking change, but it should match user expectations better
    • The output of benchmarking through the Console reporter when --benchmark-no-analysis is set is now much simpler (#1768)
    • โž• Added a matcher that can be used for checking an exceptions message (#1649, #1728)
      • The matcher helper function is called Message
      • The exception must publicly derive from std::exception
      • The matching is done exactly, including case and whitespace
    • โž• Added a matcher that can be used for checking relative equality of floating point numbers (#1746)
      • Unlike Approx, it considers both sides when determining the allowed margin
      • Special cases NaN and INFINITY to match user expectations
      • The matcher helper function is called WithinRel
    • The ULP matcher now allows for any possible distance between the two numbers
    • The random number generators now use Catch-global instance of RNG (#1734, #1736)
      • This means that nested random number generators actually generate different numbers

    Miscellaneous

    • โšก๏ธ In-repo PNGs have been optimized to lower overhead of using Catch2 via git clone
    • Catch2 now uses its own implementation of the URBG concept
      • In the future we also plan to use our own implementation of the distributions from <random> to provide cross-platform repeatability of random results
  • v2.9.2 Changes

    August 08, 2019

    ๐Ÿ›  Fixes

    • ChunkGenerator can now be used with chunks of size 0 (#1671)
    • Nested subsections are now run properly when specific section is run via the -c argument (#1670, #1673)
    • ๐Ÿ Catch2 now consistently uses _WIN32 to detect Windows platform (#1676)
    • TEMPLATE_LIST_TEST_CASE now support non-default constructible type lists (#1697)
    • ๐Ÿ›  Fixed a crash in the XMLReporter when a benchmark throws exception during warmup (#1706)
    • ๐Ÿ›  Fixed a possible infinite loop in CompactReporter (#1715)
    • ๐Ÿ›  Fixed -w NoTests returning 0 even when no tests were matched (#1449, #1683, #1684)
    • ๐Ÿ›  Fixed matcher compilation under Obj-C++ (#1661)

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ›  RepeatGenerator and FixedValuesGenerator now fail to compile when used with bool (#1692)
      • Previously they would fail at runtime.
    • ๐ŸŒฒ Catch2 now supports Android's debug logging for its debug output (#1710)
    • ๐Ÿ”ง Catch2 now detects and configures itself for the RTX platform (#1693)
      • You still need to pass --benchmark-no-analysis if you are using benchmarking under RTX
    • โœ‚ Removed a "storage class is not first" warning when compiling Catch2 with PGI compiler (#1717)

    Miscellaneous

    • ๐Ÿ“š Documentation now contains indication when a specific feature was introduced (#1695)
      • These start with Catch2 v2.3.0, (a bit over a year ago).
      • docs/contributing.md has been updated to provide contributors guidance on how to add these to newly written documentation
    • ๐Ÿ“š Various other documentation improvements
      • ToC fixes
      • Documented --order and --rng-seed command line options
      • Benchmarking documentation now clearly states that it requires opt-in
      • Documented CATCH_CONFIG_CPP17_OPTIONAL and CATCH_CONFIG_CPP17_BYTE macros
      • Properly documented built-in vector matchers
      • Improved *_THROWS_MATCHES documentation a bit
    • CMake config file is now arch-independent even if CMAKE_SIZEOF_VOID_P is in CMake cache (#1660)
    • โœ… CatchAddTests now properly escapes [ and ] in test names (#1634, #1698)
    • โช Reverted CatchAddTests adding tags as CTest labels (#1658)
      • The script broke when test names were too long
      • Overwriting LABELS caused trouble for users who set them manually
      • CMake does not let users append to LABELS if the test name has spaces