Skip to content

Releases: catchorg/Catch2

v1.9.5

15 Jun 11:08
Compare
Choose a tag to compare

1.9.5

Fixes

  • Truthy expressions are now reconstructed properly, not as booleans (#914)
  • Various warnings are no longer erroneously suppressed in test files (files that include catch.hpp, but do not define CATCH_CONFIG_MAIN or CATCH_CONFIG_RUNNER) (#871)
  • Catch no longer fails to link when main is compiled as C++, but linked against Objective-C (#855)
  • Fixed incorrect gcc version detection when deciding to use __COUNTER__ (#928)
    • Previously any GCC with minor version less than 3 would be incorrectly classified as not supporting __COUNTER__.
  • Suppressed C4996 warning caused by upcoming updated to MSVC 2017, marking std::uncaught_exception as deprecated. (#927)

Improvements

  • CMake integration script now incorporates debug messages and registers tests in an improved way (#911)
  • Various documentation improvements

v1.9.4

16 May 12:01
Compare
Choose a tag to compare

Fixes

  • CATCH_FAIL macro no longer causes compilation error without variadic macro support
  • INFO messages are no longer cleared after being reported once

Improvements and minor changes

  • Catch now uses wmain when compiled under Windows and UNICODE is defined.
    • Note that Catch still officially supports only ASCII

v1.9.3

25 Apr 14:35
Compare
Choose a tag to compare

Fixes

  • Completed the fix for (lack of) uint64_t in earlier Visual Studios

v1.9.2

25 Apr 09:08
Compare
Choose a tag to compare

Improvements and minor changes

  • All of Approx's member functions now accept strong typedefs in C++11 mode (#888)
    • Previously Approx::scale, Approx::epsilon, Approx::margin and Approx::operator() didn't.

Fixes

  • POSIX signals are now disabled by default under QNX (#889)
    • QNX does not support current enough (2001) POSIX specification
  • JUnit no longer counts exceptions as failures if given test case is marked as ok to fail.
  • Catch::Option should now have its storage properly aligned.
  • Catch no longer attempts to define uint64_t on windows (#862)
    • This was causing trouble when compiled under Cygwin

Other

  • Catch is now compiled under MSVC 2017 using std:c++latest (C++17 mode) in CI
  • We now provide cmake script that autoregisters Catch tests into ctest.
    • See contrib folder.

v1.9.1

09 Apr 19:26
Compare
Choose a tag to compare

Fixes

  • Unexpected exceptions are no longer ignored by default (#885, #887)

v1.9.0

07 Apr 20:57
Compare
Choose a tag to compare

Improvements and minor changes

  • Catch no longer attempts to ensure the exception type passed by user in REQUIRE_THROWS_AS is a constant reference.
    • It was causing trouble when REQUIRE_THROWS_AS was used inside templated functions
    • This actually reverts changes made in v1.7.2
  • Catch's Version struct should no longer be double freed when multiple instances of Catch tests are loaded into single program (#858)
    • It is now a static variable in an inline function instead of being an externed struct.
  • Attempt to register invalid tag or tag alias now throws instead of calling exit().
    • Because this happen before entering main, it still aborts execution
    • Further improvements to this are coming
  • CATCH_CONFIG_FAST_COMPILE now speeds-up compilation of REQUIRE* assertions by further ~15%.
    • The trade-off is disabling translation of unexpected exceptions into text.
  • When Catch is compiled using C++11, Approx is now constructible with anything that can be explicitly converted to double.
  • Captured messages are now printed on unexpected exceptions

Fixes:

  • Clang's -Wexit-time-destructors should be suppressed for Catch's internals
  • GCC's -Wparentheses is now suppressed for all TU's that include catch.hpp.
    • This is functionally a revert of changes made in 1.8.0, where we tried using _Pragma based suppression. This should have kept the suppression local to Catch's assertions, but bugs in GCC's handling of _Pragmas in C++ mode meant that it did not always work.
  • You can now tell Catch to use C++11-based check when checking whether a type can be streamed to output.

Other notes:

  • We have added VS 2017 to our CI
  • Work on Catch 2 should start soon

v1.8.2

13 Mar 20:30
Compare
Choose a tag to compare

Improvements and minor changes

  • TAP reporter now behaves as if -s was always set
    • This should be more consistent with the protocol desired behaviour.
  • Compact reporter now obeys -d yes argument (#780)
    • The format is "XXX.123 s: " (3 decimal places are always present).
    • Before it did not report the durations at all.
  • XML reporter now behaves the same way as Console reporter in regards to INFO
    • This means it reports INFO messages on success, if output on success (-s) is enabled.
    • Previously it only reported INFO messages on failure.
  • CAPTURE(expr) now stringifies expr in the same way assertion macros do (#639)
  • Listeners are now finally documented.
    • Listeners provide a way to hook into events generated by running your tests, including start and end of run, every test case, every section and every assertion.

Fixes:

  • Catch no longer attempts to reconstruct expression that led to a fatal error (#810)
    • This fixes possible signal/SEH loop when processing expressions, where the signal was triggered by expression decomposition.
  • Fixed (C4265) missing virtual destructor warning in Matchers (#844)
  • std::strings are now taken by const& everywhere (#842).
    • Previously some places were taking them by-value.
  • Catch should no longer change errno (#835).
    • This was caused by libstdc++ bug that we now work around.
  • Catch now provides FAIL_CHECK( ... ) macro (#765).
    • Same as FAIL( ... ), but does not abort the test.
  • Functions like fabs, tolower, memset, isalnum are now used with std:: qualification (#543).
  • Clara no longer assumes first argument (binary name) is always present (#729)
    • If it is missing, empty string is used as default.
  • Clara no longer reads 1 character past argument string (#830)
  • Regression in Objective-C bindings (Matchers) fixed (#854)

Other notes:

  • We have added VS 2013 and 2015 to our CI
  • Catch Classic (1.x.x) now contains its own, forked, version of Clara (the argument parser).

v1.8.1

01 Mar 16:08
Compare
Choose a tag to compare

Fixes

Cygwin issue with gettimeofday - #define was not early enough

v1.8.0

28 Feb 14:20
Compare
Choose a tag to compare

New features/ minor changes

  • Matchers have new, simpler (and documented) interface.
  • Changed console reporter test duration reporting format (#322)
    • Old format: Some simple comparisons between doubles completed in 0.000123s
    • New format: xxx.123s: Some simple comparisons between doubles (There will always be exactly 3 decimal places)
  • Added opt-in leak detection under MSVC + Windows (#439)
    • Enable it by compiling Catch's main with CATCH_CONFIG_WINDOWS_CRTDBG
  • Introduced new compile-time flag, CATCH_CONFIG_FAST_COMPILE, trading features for compilation speed.
    • Moves debug breaks out of tests and into implementation, speeding up test compilation time (~10% on linux).
    • More changes are coming
  • Added TAP (Test Anything Protocol) and Automake reporters.
  • XML reporter now reports filename as part of the Section and TestCase tags.
  • Approx now supports an optional margin of absolute error

Fixes

  • Silenced C4312 ("conversion from int to 'ClassName *") warnings in the evaluate layer.
  • Fixed C4512 ("assignment operator could not be generated") warnings under VS2013.
  • Cygwin compatibility fixes
    • Signal handling is no longer compiled by default.
    • Usage of gettimeofday inside Catch should no longer cause compilation errors.
  • Improved -Wparentheses supression for gcc (#674)
    • When compiled with gcc 4.8 or newer, the supression is localized to assertions only
    • Otherwise it is supressed for the whole TU
  • Fixed test spec parser issue (with escapes in multiple names)

Other

  • Various documentation fixes and improvements

v1.7.2

13 Feb 16:24
Compare
Choose a tag to compare

Fixes and minor improvements

Xml:

(technically the first two are breaking changes but are also fixes and arguably break few if any people)

  • C-escape control characters instead of XML encoding them (which requires XML 1.1)
  • Revert XML output to XML 1.0
  • Can provide stylesheet references by extending the XML reporter
  • Added description and tags attribites to XML Reporter
  • Tags are closed and the stream flushed more eagerly to avoid stdout interpolation

Other:

  • REQUIRE_THROWS_AS now catches exception by const& and reports expected type
  • In SECTIONs the file/ line is now of the SECTION. not the TEST_CASE
  • Added std:: qualification to some functions from C stdlib
  • Removed use of RTTI (dynamic_cast) that had crept back in
  • Silenced a few more warnings in different circumstances
  • Travis improvements