Skip to content

Releases: catchorg/Catch2

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

v2.7.1

08 Apr 11:44
v2.7.1
b9dd193
Compare
Choose a tag to compare

Other

I now have a Patreon for my work on Catch2

Improvements

  • Reporters now print out the filters applied to test cases (#1550, #1585)
  • Added GENERATE_COPY and GENERATE_REF macros that can use variables inside the generator expression
    • Because of the significant danger of lifetime issues, the default GENERATE macro still does not allow variables
  • The map generator helper now deduces the mapped return type (#1576)

Fixes

  • Fixed ObjC++ compilation (#1571)
  • Fixed test tag parsing so that [.foo] is now parsed as [.][foo].
  • Suppressed warning caused by the Windows headers defining SE codes in different manners (#1575)

v2.7.0

08 Mar 13:04
v2.7.0
d633072
Compare
Choose a tag to compare

Improvements

  • TEMPLATE_PRODUCT_TEST_CASE now uses the resulting type in the name, instead of the serial number (#1544)
  • Catch2's single header is now strictly ASCII (#1542)
  • Added generator for random integral/floating point types
    • The types are inferred within the random helper
  • Added back RangeGenerator (#1526)
    • RangeGenerator returns elements within a certain range
  • Added ChunkGenerator generic transform (#1538)
    • A ChunkGenerator returns the elements from different generator in chunks of n elements
  • Added UNSCOPED_INFO (#415, #983, #1522)
    • This is a variant of INFO that lives until next assertion/end of the test case.

Fixes

  • All calls to C stdlib functions are now std:: qualified (#1541)
    • Code brought in from Clara was also updated.
  • Running tests will no longer open the specified output file twice (#1545)
    • This would cause trouble when the file was not a file, but rather a named pipe
    • Fixes the CLion/Resharper integration with Catch
  • Fixed -Wunreachable-code occuring with (old) ccache+cmake+clang combination (#1540)
  • Fixed -Wdefaulted-function-deleted warning with Clang 8 (#1537)
  • Catch2's type traits and helpers are now properly namespaced inside Catch:: (#1548)
  • Fixed std{out,err} redirection for failing test (#1514, #1525)
    • Somehow, this bug has been present for well over a year before it was reported

Contrib

  • ParseAndAddCatchTests now properly escapes commas in the test name (#1527)