Skip to content

Releases: catchorg/Catch2

v3.0.0-preview1

28 Dec 20:02
4005d87
Compare
Choose a tag to compare
v3.0.0-preview1 Pre-release
Pre-release

This is a preview release for the changes in the next (v3) major version. The biggest change is that Catch2 is now primarily provided as a static library. Use Catch2Main or Catch2 CMake targets to link against it.

(Potentially) Breaking changes

  • ANON_TEST_CASE has been removed, use TEST_CASE with no arguments instead (#1220)
  • --list* commands no longer have non-zero return code (#1410)
  • --list-test-names-only has been removed (#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 (#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 implicitly convertible to it

Fixes

  • The INFO macro no longer contains superfluous semicolon (#1456)
  • The --list* family of command line flags now return 0 on success (#1410, #1146)

v2.11.0

15 Nov 14:09
v2.11.0
e1c9d55
Compare
Choose a tag to compare

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

24 Oct 17:25
Compare
Choose a tag to compare

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

20 Oct 19:13
v2.10.1
a2c8dce
Compare
Choose a tag to compare

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

13 Oct 21:51
v2.10.0
7c9f92b
Compare
Choose a tag to compare

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

08 Aug 12:10
v2.9.2
2c869e1
Compare
Choose a tag to compare

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

v2.9.1

17 Jun 10:06
v2.9.1
2f631bb
Compare
Choose a tag to compare

Fixes

  • Fix benchmarking compilation failure in files without CATCH_CONFIG_EXTERNAL_INTERFACES (or implementation)

v2.9.0

16 Jun 08:46
v2.9.0
f9dce28
Compare
Choose a tag to compare

This release replaces the old benchmarking support with a new one, based on donated Nonius code. It should be considered working, but the integration interface might change based on feedback we receive.

Improvements

  • The experimental benchmarking support has been replaced by integrating Nonius code (#1616)
    • This provides a much more featurefull micro-benchmarking support.
    • Due to the compilation cost, it is disabled by default. See the documentation for details.
    • As far as backwards compatibility is concerned, this feature is still considered experimental in that we might change the interface based on user feedback.
  • WithinULP matcher now shows the acceptable range (#1581)
  • Template test cases now support type lists (#1627)

v2.8.0

27 May 07:09
v2.8.0
00347f1
Compare
Choose a tag to compare

Improvements

  • Templated test cases no longer check whether the provided types are unique (#1628)
    • This allows you to e.g. test over uint32_t, uint64_t, and size_t without compilation failing
  • The precision of floating point stringification can be modified by user (#1612, #1614)
  • We now provide REGISTER_ENUM convenience macro for generating StringMaker specializations for enums
    • See the "String conversion" documentation for details
  • Added new set of macros for template test cases that enables the use of NTTPs (#1531, #1609)
    • See "Test cases and sections" documentation for details

Fixes

  • UNSCOPED_INFO macro now has a prefixed/disabled/prefixed+disabled versions (#1611)
  • Reporting errors at startup should no longer cause a segfault under certain circumstances (#1626)

Miscellaneous

  • CMake will now prevent you from attempting in-tree build (#1636, #1638)
    • Previously it would break with an obscure error message during the build step

v2.7.2

22 Apr 21:20
v2.7.2
7c37501
Compare
Choose a tag to compare

I now have a Patreon for Catch2

Improvements

  • Added an approximate vector matcher (#1499)

Fixes

  • Filters will no longer be shown if there were none
  • Fixed compilation error when using Homebrew GCC on OS X (#1588, #1589)
  • Fixed the console reporter not showing messages that start with a newline (#1455, #1470)
  • Modified JUnit reporter's output so that rng seed and filters are reported according to the JUnit schema (#1598)
  • Fixed some obscure warnings and static analysis passes

Miscellaneous

  • Various improvements to ParseAndAddCatchTests (#1559, #1601)
    • When a target is parsed, it receives ParseAndAddCatchTests_TESTS property which summarizes found tests
    • Fixed problem with tests not being found if the OptionalCatchTestLauncher variables is used
    • Including the script will no longer forcefully modify CMAKE_MINIMUM_REQUIRED_VERSION
    • CMake object libraries are ignored when parsing to avoid needless warnings
  • CatchAddTests now adds test's tags to their CTest labels (#1600)
  • Added basic CPack support to our build