Releases: catchorg/Catch2
Releases · catchorg/Catch2
v2.10.2
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
- KeyID
v2.10.1
Improvements
- Catch2 now guards itself against
min
andmax
macros fromwindows.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
v2.10.0
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
- The toggle is
- Added a generator that returns elements of a range
- Use via
from_range(from, to)
orfrom_range(container)
- Use via
- 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
- They must still provide global
- 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
- The matcher helper function is called
- 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
andINFINITY
to match user expectations - The matcher helper function is called
WithinRel
- Unlike
- 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
- In the future we also plan to use our own implementation of the distributions from
v2.9.2
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
andFixedValuesGenerator
now fail to compile when used withbool
(#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
- You still need to pass
- 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
andCATCH_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
v2.9.0
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
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
, andsize_t
without compilation failing
- This allows you to e.g. test over
- The precision of floating point stringification can be modified by user (#1612, #1614)
- We now provide
REGISTER_ENUM
convenience macro for generatingStringMaker
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
v2.7.2
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
- When a target is parsed, it receives
CatchAddTests
now adds test's tags to their CTest labels (#1600)- Added basic CPack support to our build
v2.7.1
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
andGENERATE_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
- Because of the significant danger of lifetime issues, the default
- The
map
generator helper now deduces the mapped return type (#1576)
Fixes
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)