Releases: catchorg/Catch2
Releases · catchorg/Catch2
v1.12.1
v2.1.2
Fixes
- Fixed compilation error with
-fno-rtti(#1165) - Fixed NoAssertion warnings
operator<<is used before range-based stringification (#1172)- Fixed
-Wpedanticwarnings (extra semicolons and binary literals) (#1173)
Improvements
- Added
CATCH_VERSION_{MAJOR,MINOR,PATCH}macros (#1131) - Added
BrightYellowcolour for use in reporters (#979)- It is also used by ConsoleReporter for reconstructed expressions
Other changes
- Catch is now exported as a CMake package and linkable target (#1170)
v2.1.1
Improvements
- Static arrays are now properly stringified like ranges across MSVC/GCC/Clang
- Embedded newer version of Clara -- v1.1.1
- This should fix some warnings dragged in from Clara
- MSVC's CLR exceptions are supported
Fixes
- Fixed compilation when comparison operators do not return bool (#1147)
- Fixed CLR exceptions blowing up the executable during translation (#1138)
Other changes
- Many CMake changes
NO_SELFTESToption is deprecated, useBUILD_TESTINGinstead.- Catch specific CMake options were prefixed with
CATCH_for namespacing purposes - Other changes to simplify Catch2's packaging
v1.12.0
v2.1.0
Improvements
- Various performance improvements
- On top of the performance regression fixes
- Experimental support for PCH was added (#1061)
CATCH_CONFIG_EXTERNAL_INTERFACESnow brings in declarations of Console, Compact, XML and JUnit reportersMatcherBaseno longer has a pointless second template argument- Reduced the number of warning suppressions that leak into user's code
- Bugs in g++ 4.x and 5.x mean that some of them have to be left in
Fixes
- Fixed performance regression from Catch classic
- One of the performance improvement patches for Catch classic was not applied to Catch2
- Fixed platform detection for iOS (#1084)
- Fixed compilation when
g++is used together withlibc++(#1110) - Fixed TeamCity reporter compilation with the single header version
- To fix the underlying issue we will be versioning reporters in single_include folder per release
- The XML reporter will now report
WARNmessages even when not used with-s - Fixed compilation when
VectorContainsmatcher was combined using&&(#1092) - Fixed test duration overflowing after 10 seconds (#1125, #1129)
- Fixed
std::uncaught_exceptiondeprecation warning (#1124)
New features
- New Matchers
- Regex matcher for strings,
Matches. - Set-equal matcher for vectors,
UnorderedEquals - Floating point matchers,
WithinAbsandWithinULP.
- Regex matcher for strings,
- Stringification now attempts to decompose all containers (#606)
- Containers are objects that respond to ADL
begin(T)andend(T).
- Containers are objects that respond to ADL
Other changes
- Reporters will now be versioned in the
single_includefolder to ensure their compatibility with the last released version
v2.0.1
This is the first full release of Catch2. There may be some minor breaking changes for some people. Please see the details below before moving to this release. If you need to stay on Catch "Classic", because you do not have a fully C++11 aware compiler, for example, then please see the Catch1.x branch.
The following list is changes compared to Catch 1.x:
Breaking changes
- Removed C++98 support
- Removed legacy reporter support
- Removed legacy generator support
- Generator support will come back later, reworked
- Removed
Catch::toStringsupport- The new stringification machinery uses
Catch::StringMakerspecializations first andoperator<<overloads second.
- The new stringification machinery uses
- Removed legacy
SCOPED_MSGandSCOPED_INFOmacros - Removed
INTERNAL_CATCH_REGISTER_REPORTERCATCH_REGISTER_REPORTERshould be used to register reporters
- Removed legacy
[hide]tag[.],[.foo]and[!hide]are still supported
- Output into debugger is now colourized
*_THROWS_AS(expr, exception_type)now unconditionally appendsconst&to the exception type.CATCH_CONFIG_FAST_COMPILEnow affects theCHECK_family of assertions as well asREQUIRE_family of assertions- This is most noticeable in
CHECK(throws()), which would previously report failure, properly stringify the exception and continue. Now it will report failure and stop executing current section.
- This is most noticeable in
- Removed deprecated matcher utility functions
Not,AllOfandAnyOf.- They are superseded by operators
!,&&and||, which are natural and do not have limited arity
- They are superseded by operators
- Removed support for non-const comparison operators
- Non-const comparison operators are an abomination that should not exist
- They were breaking support for comparing function to function pointer
std::pairandstd::tupleare no longer stringified by default- This is done to avoid dragging in
<tuple>and<utility>headers in common path - Their stringification can be enabled per-file via new configuration macros
- This is done to avoid dragging in
Approxis subtly different and hopefully behaves more as users would expectApprox::scaledefaults to0.0Approx::epsilonno longer applies to the larger of the two compared values, but only to theApprox's valueINFINITY == Approx(INFINITY)returns true
Improvements
- Reporters and Listeners can be defined in files different from the main file
- The file has to define
CATCH_CONFIG_EXTERNAL_INTERFACESbefore including catch.hpp.
- The file has to define
- Errors that happen during set up before main are now caught and properly reported once main is entered
- If you are providing your own main, you can access and use these as well.
- New assertion macros, *_THROWS_MATCHES(expr, exception_type, matcher) are provided
- As the arguments suggest, these allow you to assert that an expression throws desired type of exception and pass the exception to a matcher.
- JUnit reporter no longer has significantly different output for test cases with and without sections
- Most assertions now support expressions containing commas (ie
REQUIRE(foo() == std::vector<int>{1, 2, 3});) - Catch now contains experimental micro benchmarking support
- See
projects/SelfTest/Benchmark.tests.cppfor examples - The support being experiment means that it can be changed without prior notice
- See
- Catch uses new CLI parsing library (Clara)
- Users can now easily add new command line options to the final executable
- This also leads to some changes in
Catch::Sessioninterface
- All parts of matchers can be removed from a TU by defining
CATCH_CONFIG_DISABLE_MATCHERS- This can be used to somewhat speed up compilation times
- An experimental implementation of
CATCH_CONFIG_DISABLEhas been added- Inspired by Doctest's
DOCTEST_CONFIG_DISABLE - Useful for implementing tests in source files
- ie for functions in anonymous namespaces
- Removes all assertions
- Prevents
TEST_CASEregistrations - Exception translators are not registered
- Reporters are not registered
- Listeners are not registered
- Inspired by Doctest's
- Reporters/Listeners are now notified of fatal errors
- This means specific signals or structured exceptions
- The Reporter/Listener interface provides default, empty, implementation to preserve backward compatibility
- Stringification of
std::chrono::durationandstd::chrono::time_pointis now supported- Needs to be enabled by a per-file compile time configuration option
- Add
pkg-configsupport to CMake install command
Fixes
- Don't use console colour if running in XCode
- Explicit constructor in reporter base class
- Swept out
-Wweak-vtables,-Wexit-time-destructors,-Wglobal-constructorswarnings - Compilation for Universal Windows Platform (UWP) is supported
- SEH handling and colorized output are disabled when compiling for UWP
- Implemented a workaround for
std::uncaught_exceptionissues in libcxxrt- These issues caused incorrect section traversals
- The workaround is only partial, user's test can still trigger the issue by using
throw;to rethrow an exception
- Suppressed C4061 warning under MSVC
Internal changes
- The development version now uses .cpp files instead of header files containing implementation.
- This makes partial rebuilds much faster during development
- The expression decomposition layer has been rewritten
- The evaluation layer has been rewritten
- New library (TextFlow) is used for formatting text to output
v1.11.0
1.11.0
Fixes
- The original expression in
REQUIRE_FALSE( expr )is now reporter properly as!( expr )(#1051)- Previously the parentheses were missing and
x != ywould be expanded as!x != x
- Previously the parentheses were missing and
Approx::Marginis now inclusive (#952)- Previously it was meant and documented as inclusive, but the check itself wasn't
- This means that
REQUIRE( 0.25f == Approx( 0.0f ).margin( 0.25f ) )passes, instead of fails
RandomNumberGenerator::result_typeis now unsigned (#1050)
Improvements
__JETBRAINS_IDE__macro handling is now CLion version specific (#1017)- When CLion 2017.3 or newer is detected,
__COUNTER__is used instead of
- When CLion 2017.3 or newer is detected,
- TeamCity reporter now explicitly flushes output stream after each report (#1057)
- On some platforms, output from redirected streams would show up only after the tests finished running
ParseAndAddCatchTestsnow can add test files as dependency to CMake configuration- This means you do not have to manually rerun CMake configuration step to detect new tests
V2.0.0-develop.6
Improvements
- Add
pkg-configsupport to CMake install
Fixes
- More usages of
minandmaxare enclosed in parentheses to solve MFC macro issues (#1034) - Bitfield capture now compiles (#1027)
- Expansion of
*_FALSEnow properly parenthesises original expression - Removed mismatch between
pragma warning(push)andpragma warning(pop)in single include - Suppressed
C4601inside Catch - We now check if
WINAPI_FAMILYis defined before using it to detect UWP build - Paths prefixed with '/' are parsed properly
V2.0.0-develop.5
Improvements
- Added stringification for std::chrono::{duration,time_point}
Fixes
- fixed benchmarks when using multiple reporters (which happens when you register a listener).
- fixed command line parser (Clara) to report unrecognised options again
- fixed single include for MSVC (#1020)
- (partial) workaround for long-standing bug in some compilers' support for uncaught_exception() (#1028)
v2.0.0-develop.4
Improvements
- More warnings are silenced
- Don't use console colour if running in XCode
- More compile time optimisations
Fixes
- CATCH_CONFIG_FAST_COMPILE now now builds again
- explicit constructor in reporter base class
- Many fixes for building in Objective-C context
- Fixed text formatting with multiple consecutive newlines (from Clara)
Breaking changes
- Removed deprecated matcher utility functions
Not,AllOfandAnyOf.- They are superseded by operators
!,&&and||, which are natural and do not have limited arity
- They are superseded by operators
- No longer accept non-const comparison operators