Releases: catchorg/Catch2
v2.7.0
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
- The types are inferred within the
- 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.
- This is a variant of
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)
v2.6.1
Improvements
Fixes
v2.6.0
With this release the data generator feature is now fully supported.
Improvements
- Added
TEMPLATE_PRODUCT_TEST_CASE
(#1454, #1468)- This allows you to easily test various type combinations, see documentation for details
- The error message for
&&
and||
inside assertions has been improved (#1273, #1480) - The error message for chained comparisons inside assertions has been improved (#1481)
- Added
StringMaker
specialization forstd::optional
(#1510) - The generator interface has been redone once again (#1516)
- It is no longer considered experimental and is fully supported
- The new interface supports "Input" generators
- The generator documentation has been fully updated
- We also added 2 generator examples
Fixes
- Fixed
-Wredundant-move
on newer Clang (#1474) - Removed unreachable mentions
std::current_exception
,std::rethrow_exception
in no-exceptions mode (#1462)- This should fix compilation with IAR
- Fixed missing
<type_traits>
include (#1494) - Fixed various static analysis warnings
- Fix double run of a test case if user asks for a specific section (#1394, #1492)
- ANSI colour code output now respects
-o
flag and writes to the file as well (#1502) - Fixed detection of
std::variant
support for compilers other than Clang (#1511)
Contrib
ParseAndAddCatchTests
has learned how to useDISABLED
CTest property (#1452)ParseAndAddCatchTests
now works when there is a whitspace before the test name (#1493)
Miscellaneous
- We added new issue templates for reporting issues on GitHub
contributing.md
has been updated to reflect the current test status (#1484)
v2.5.0
Improvements
- Added support for templated tests via
TEMPLATE_TEST_CASE
(#1437)
Fixes
- Fixed compilation of
PredicateMatcher<const char*>
by removing partial specialization ofMatcherMethod<T*>
- Listeners now implicitly support any verbosity (#1426)
- Fixed compilation with Embarcadero builder by introducing
Catch::isnan
polyfill (#1438) - Fixed
CAPTURE
asserting for non-trivial captures (#1436, #1448)
Miscellaneous
- We should now be providing first party Conan support via https://bintray.com/catchorg/Catch2 (#1443)
- Added new section "deprecations and planned changes" to the documentation
- It contains summary of what is deprecated and might change with next major version
- From this release forward, the released headers should be pgp signed (#430)
- KeyID
E29C 46F3 B8A7 5028 6079 3B7D ECC9 C20E 314B 2360
- or https://codingnest.com/files/horenmar-publickey.asc
- KeyID
v2.4.2
Improvements
- XmlReporter now also outputs the RNG seed that was used in a run (#1404)
Catch::Session::applyCommandLine
now also acceptswchar_t
arguments.- However, Catch2 still does not support unicode.
- Added
STATIC_REQUIRE
macro (#1356, #1362) - Catch2's singleton's are now cleaned up even if tests are run (#1411)
- This is mostly useful as a FP prevention for users who define their own main.
- Specifying an invalid reporter via
-r
is now reported sooner (#1351, #1422)
Fixes
- Stringification no longer assumes that
char
is signed (#1399, #1407)- This caused a
Wtautological-compare
warning.
- This caused a
- SFINAE for
operator<<
no longer sees different overload set than the actual insertion (#1403)
Contrib
v2.4.1
v2.4.0
This release brings two new experimental features, generator support and a -fno-exceptions
support. Being experimental means that they will not be subject to the usual stability guarantees provided by semver.
Improvements
- Various small runtime performance improvements
CAPTURE
macro is now variadic- Added
AND_GIVEN
macro (#1360) - Added experimental support for data generators
- See their documentation for details
- Added support for compiling and running Catch without exceptions
- Doing so limits the functionality somewhat
- Look into the documentation for details
Fixes
- Suppressed
-Wnon-virtual-dtor
warnings in Matchers (#1357) - Suppressed
-Wunreachable-code
warnings in floating point matchers (#1350)
CMake
- It is now possible to override which Python is used to run Catch's tests (#1365)
- Catch now provides infrastructure for adding tests that check compile-time configuration
- Catch no longer tries to install itself when used as a subproject (#1373)
- Catch2ConfigVersion.cmake is now generated as arch-independent (#1368)
- This means that installing Catch from 32-bit machine and copying it to 64-bit one works (this is what e.g. conan does)
v2.3.0
This release changes the include paths provided by our CMake and pkg-config integration. The proper include path for the single-header when using one of the above is now <catch2/catch.hpp>
. This change also necessitated changes to paths inside the repository, so that the single-header version is now at single_include/catch2/catch.hpp
, rather than single_include/catch.hpp
.
Fixes
- Fixed Objective-C++ build
-Wunused-variable
suppression no longer leaks from Catch's header under Clang- Implementation of the experimental new output capture can now be disabled (#1335)
- This allows building Catch2 on platforms that do not provide things like
dup
ortmpfile
.
- This allows building Catch2 on platforms that do not provide things like
- The JUnit and XML reporters will no longer skip over successful tests when running without
-s
(#1264, #1267, #1310)- See improvements for more details
Improvements
- pkg-config and CMake integration has been rewritten
- If you use them, the new include path is
#include <catch2/catch.hpp>
- CMake installation now also installs scripts from
contrib/
- For details see the new documentation
- If you use them, the new include path is
- Reporters now have a new customization point,
ReporterPreferences::shouldReportAllAssertions
- When this is set to
false
and the tests are run without-s
, passing assertions are not sent to the reporter. - Defaults to
false
.
- When this is set to
- Added
DYNAMIC_SECTION
, a section variant that constructs its name using stream- This means that you can do
DYNAMIC_SECTION("For X := " << x)
.
- This means that you can do
v2.2.3
To fix some of the bugs, some behavior had to change in potentially breaking manner.
This means that even though this is a patch release, it might not be a drop-in replacement.
Fixes
- Listeners are now called before reporter
- This was always documented to be the case, now it actually works that way
- Catch's commandline will no longer accept multiple reporters
- This was done because multiple reporters never worked properly and broke things in non-obvious ways
- This has potential to be a breaking change
- MinGW is now detected as Windows platform w/o SEH support (#1257)
- This means that Catch2 no longer tries to use POSIX signal handling when compiled with MinGW
- Fixed potential UB in parsing tags using non-ASCII characters (#1266)
- Note that Catch2 still supports only ASCII test names/tags/etc
TEST_CASE_METHOD
can now be used on classnames containing commas (#1245)- You have to enclose the classname in extra set of parentheses
- Fixed insufficient alt stack size for POSIX signal handling (#1225)
- Fixed compilation error on Android due to missing
std::to_string
in C++11 mode (#1280) - Fixed the order of user-provided
FALLBACK_STRINGIFIER
in stringification machinery (#1024)- It was intended to be replacement for built-in fallbacks, but it was used after them.
- This has potential to be a breaking change
- Fixed compilation error when a type has an
operator<<
with templated lhs (#1285, #1306)
Improvements
- Added a new, experimental, output capture (#1243)
- This capture can also redirect output written via C apis, e.g.
printf
- To opt-in, define
CATCH_CONFIG_EXPERIMENTAL_REDIRECT
in the implementation file
- This capture can also redirect output written via C apis, e.g.
- Added a new fallback stringifier for classes derived from
std::exception
- Both
StringMaker
specialization andoperator<<
overload are given priority
- Both