Catch2/Catch2.changes

578 lines
24 KiB
Plaintext

-------------------------------------------------------------------
Thu Jul 27 12:12:56 UTC 2023 - Atri Bhattacharya <badshah400@gmail.com>
- Update to version 3.4.0:
* VectorEquals supports elements that provide only == and not !=
(gh#catchorg/Catch2#2648).
* Catch2 supports compiling with IAR compiler
(gh#catchorg/Catch2#2651).
* Various small internal performance improvements.
* Various small internal compilation time improvements.
* XMLReporter now reports location info for INFO and WARN
(gh#catchorg/Catch2#1251).
* Documented that SKIP in generator constructor can be used to
handle empty generator (gh#catchorg/Catch2#1593).
* Added experimental static analysis support to TEST_CASE and
SECTION macros (gh#catchorg/Catch2#2681).
* *_THROWS, *_THROWS_AS, etc now suppress warning coming from
__attribute__((warn_unused_result)) on GCC
(gh#catchorg/Catch2#2691).
* Fixed assertionStarting events being sent after the expr is
evaluated (gh#catchorg/Catch2#2678).
* Errors in TEST_CASE tags are now reported nicely
(gh#catchorg/Catch2#2650).
* Bunch of improvements to catch_discover_tests.
* meson build can disable building tests
(gh#catchorg/Catch2#2693).
* meson build properly sets meson version 0.54.1 as the minimal
supported version (gh#catchorg/Catch2#2688).
- Use ninja for build.
-------------------------------------------------------------------
Tue Mar 7 19:52:50 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 3.3.2:
* Further reduced allocations
* The compact, console, TAP and XML reporters perform less
allocations in various cases
* Removed 1 allocation per entered `SECTION`/`TEST_CASE`.
* Removed 2 allocations per test case exit, if stdout/stderr is
captured
* Improved performance
* Section tracking is 10%-25% faster than in v3.3.0
* Assertion handling is 5%-10% faster than in v3.3.0
* Test case registration is 1%-2% faster than in v3.3.0
* Tiny speedup for registering listeners
* Tiny speedup for `CAPTURE`, `TEST_CASE_METHOD`,
`METHOD_AS_TEST_CASE`, and `TEMPLATE_LIST_TEST_*` macros.
* `Contains`, `RangeEquals` and `UnorderedRangeEquals` matchers
now support ranges with iterator + sentinel pair
* Added `IsNaN` matcher
* Unlike `REQUIRE(isnan(x))`, `REQUIRE_THAT(x, IsNaN())` shows
you the value of `x`.
* Suppressed `declared_but_not_referenced` warning for NVHPC
(#2637)
* Fixed performance regression in section tracking introduced
in v3.3.1
* Extreme cases would cause the tracking to run about 4x slower
than in 3.3.0
-------------------------------------------------------------------
Tue Feb 14 05:37:32 UTC 2023 - Atri Bhattacharya <badshah400@gmail.com>
- Update to version 3.3.1:
* Reduced allocations and improved performance, mainly from
smarter handling of `SECTION`s, especially sibling `SECTION`s.
-------------------------------------------------------------------
Mon Jan 23 18:51:40 UTC 2023 - Atri Bhattacharya <badshah400@gmail.com>
- Update to version 3.3.0:
* Added MessageMatches exception matcher
(gh#catchorg/Catch2#2570).
* Added RangeEquals and UnorderedRangeEquals generic range
matchers (gh#catchorg/Catch2#2377).
* Added SKIP macro for skipping tests from within the test body
(gh#catchorg/Catch2#2360).
* Restored support for PPC Macs in the break-into-debugger
functionality (gh#catchorg/Catch2#2619).
* Made our warning suppression compatible with CUDA toolkit pre
11.5 (gh#catchorg/Catch2#2626).
* Cleaned out some static analysis complaints.
* Fixed macro redefinition warning when NVCC was reporting as
MSVC (gh#catchorg/Catch2#2603).
* Fixed throws in generator constructor causing the whole binary
to abort (gh#catchorg/Catch2#2615).
* Fixed missing transitive include with libstdc++13
(gh#catchorg/Catch2#2611).
* Improved support for dynamic library build with non-MSVC
compilers on Windows (gh#catchorg/Catch2#2630).
* When used as a subproject, Catch2 keeps its generated header
in a separate directory from the main project
(gh#catchorg/Catch2#2604).
-------------------------------------------------------------------
Wed Jan 18 07:33:34 UTC 2023 - Atri Bhattacharya <badshah400@gmail.com>
- Update to version 3.2.1:
* Fix the reworked decomposer to work with older (pre 9) GCC
versions (gh#catchorg/Catch2#2571).
- Changes from version 3.2.0:
* Added `CATCH_CONFIG_GETENV` compile-time toggle
* (gh#catchorg/Catch2#2562).
* Added support for more Bazel test environment variables.
* Bunch of small tweaks and improvements in reporters.
* Added support for asserting on types that can only be compared
* with literal 0 (gh#catchorg/Catch2#2555).
* Simplified internals of matcher related macros.
* Cleaned out some warnings and static analysis issues.
* Fixed serialization of test filters so the output roundtrips.
* Catch2's build no longer leaks `-ffile-prefix-map` setting to
* dependees (gh#catchorg/Catch2#2533).
-------------------------------------------------------------------
Sat Sep 24 08:01:35 UTC 2022 - Ferdinand Thiessen <rpm@fthiessen.de>
- Update to 3.1.0
* Added type constraints onto random generator
* Added All/Any/NoneTrue range matchers
* The JUnit reporter now normalizes classnames from C++ namespaces
to Java-like namespaces
* The Bazel support now understands BAZEL_TEST environment variable
* catch_discover_tests now has a new options for setting library
load path(s) when running the Catch2 binary
* Fixed crash when listing listeners without any registered listeners
- Update to 3.0.1
* Breaking changes:
* Catch2 is now split into multiple headers
* C++14 is the minimum required C++ version
* CATCH_CONFIG_DISABLE_MATCHERS no longer exists.
* CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER no longer exists.
* ANON_TEST_CASE has been removed
* Multiple commandline flags have changed their behavior
* See migration guide
https://github.com/catchorg/Catch2/blob/v3.0.1/docs/migrate-v2-to-v3.md#top
* Matchers have been extended with the ability to use different
signatures of match
* templated match member function
* Provided generic matchers like IsEmpty, SizeIs, Contains,
AllMatch, AnyMatch, NoneMatch
* Significant compilation time improvements
* Some runtime performance optimizations
* Many other changes and bugfixes
https://github.com/catchorg/Catch2/releases/tag/v3.0.1
- Removed upstream merged fix-pragmas-old-gcc.patch
-------------------------------------------------------------------
Tue Apr 26 12:06:41 UTC 2022 - Ferdinand Thiessen <rpm@fthiessen.de>
- Update to 2.13.9
* Fixed issue with -# (filename-as-tag) flag when __FILE__ expands
into filename without directories
* Fixed CAPTURE macro not being variadic when disabled through
CATCH_CONFIG_DISABLE
- Update to 2.13.8
* Fix: Made Approx::operator() const
* Improved pkg-config files
* The macro-generated names for things like TEST_CASE no longer
create reserved identifiers
* Clang-tidy should no longer warn about missing virtual dispatch
in FilterGenerator's constructor
- Added fix-pragmas-old-gcc.patch
-------------------------------------------------------------------
Thu Aug 5 11:24:30 UTC 2021 - Luigi Baldoni <aloisio@gmx.com>
- Update to version 2.13.7
Fixes:
* Added missing `<iterator>` include in benchmarking.
* Fixed noexcept build with benchmarking enabled.
* Fixed build for compilers with C++17 support but without
C++17 library support.
* JUnit only uses 3 decimal places when reporting durations.
* `!mayfail` tagged tests are now marked as `skipped` in JUnit
reporter output.
-------------------------------------------------------------------
Mon May 3 18:05:28 UTC 2021 - Ferdinand Thiessen <rpm@fthiessen.de>
- Update to version 2.13.6
* Disabling all signal handlers no longer breaks compilation
* catch_discover_tests should handle escaped semicolon (;) better
-------------------------------------------------------------------
Tue Apr 13 07:50:44 UTC 2021 - Luigi Baldoni <aloisio@gmx.com>
- Update to version 2.13.5
Improvements:
* Added workaround for bug in XLC 16.1.0.1
* Add detection for LCC when it is masquerading as GCC
* Modified posix signal handling so it supports newer libcs
+ `MINSIGSTKSZ` was no longer usable in constexpr context.
Fixes:
* Fixed compilation of benchmarking when `min` and `max`
macros are defined
+ Including `windows.h` without `NOMINMAX` remains a really
bad idea, don't do it
Miscellaneous:
* `Catch2WithMain` target (static library) is no longer built
by default
+ Building it by default was at best unnecessary overhead
for people not using it, and at worst it caused trouble
with install paths
+ To have it built, set CMake option
`CATCH_BUILD_STATIC_LIBRARY` to `ON`
* The check whether Catch2 is being built as a subproject is
now more reliable
+ The problem was that if the variable name used internally
was defined the project including Catch2 as subproject, it
would not be properly overwritten for Catch2's CMake.
version 2.13.4
Improvements:
* Improved the hashing algorithm used for shuffling test cases
+ `TEST_CASE`s that differ only in the last character should
be properly shuffled
+ Note that this means that v2.13.4 gives you a different
order of test cases than 2.13.3, even given the same seed.
Miscellaneous:
* Deprecated `ParseAndAddCatchTests` CMake integration
+ It is impossible to implement it properly for all the
different test case variants Catch2 provides, and there
are better options provided.
+ Use `catch_discover_tests` instead, which uses runtime
information about available tests.
* Fixed bug in `catch_discover_tests` that would cause it to
fail when used in specific project structures
* Added Bazel build file
* Added an experimental static library target to CMake
-------------------------------------------------------------------
Tue Dec 1 11:27:06 UTC 2020 - aloisio@gmx.com
- Update to version 2.13.3
Fixes:
* Fixed possible infinite loop when combining generators with
section filter (`-c` option)
Miscellaneous:
* Fixed `ParseAndAddCatchTests` not finding `TEST_CASE`s
without tags
* `ParseAndAddCatchTests` supports `CMP0110` policy for
changing behaviour of `add_test`
+ This was the shortlived change in CMake 3.18.0 that
temporarily broke `ParseAndAddCatchTests`
version 2.13.2
Improvements:
* Implemented workaround for NVCC ICE
Fixes:
* Fixed detection of `std::uncaught_exceptions` support under
non-msvc platforms
Miscellaneous:
* `catch_discover_tests` has been improved significantly
+ You can now specify which reporter should be used
+ You can now modify where the output will be written
+ `WORKING_DIRECTORY` setting is respected
* `ParseAndAddCatchTests` now supports `TEMPLATE_TEST_CASE`
macros
* Various documentation fixes and improvements
version 2.13.1
Improvements:
* `ParseAndAddCatchTests` handles CMake v3.18.0 correctly
* Improved autodetection of `std::byte`
* Simplified implementation of templated test cases
+ This should have a tiny positive effect on its compilation
throughput
Fixes:
* Automatic stringification of ranges handles sentinel ranges
properly
-------------------------------------------------------------------
Fri Aug 14 13:05:03 UTC 2020 - Luigi Baldoni <aloisio@gmx.com>
- Update to version 2.13.0
Improvements:
* `GENERATE` can now follow a `SECTION` at the same level of
nesting
+ The `SECTION`(s) before the `GENERATE` will not be run
multiple times, the following ones will.
* Added `-D`/`--min-duration` command line flag
+ If a test takes longer to finish than the provided value,
its name and duration will be printed.
+ This flag is overriden by setting `-d`/`--duration`.
Fixes:
* `TAPReporter` no longer skips successful assertions
version 2.12.4:
* `GENERATE` nested in a for loop no longer creates multiple
generators
* Fixed copy paste error breaking `TEMPLATE_TEST_CASE_SIG` for
6 or more arguments
* Fixed potential UB when handling non-ASCII characters in CLI
args
* There can be multiple calls to `GENERATE` on a single line
* Improved `fno-except` support for platforms that do not
provide shims for exception-related std functions
+ E.g. the Green Hills C++ compiler
* XmlReporter now also reports test-case-level statistics
+ This is done via a new element, `OverallResultsCases`
* Added `.clang-format` file to the repo
* Rewrote contributing docs
+ They should explain the different levels of testing and so
on much better
version 2.12.2:
* Fixed compilation failure if `is_range` ADL found deleted
function
* Fixed potential UB in `CAPTURE` if the expression contained
non-ASCII characters
* `std::result_of` is not used if `std::invoke_result` is
available
* JUnit reporter writes out `status` attribute for tests
* Suppresed clang-tidy's `hicpp-vararg` warning
+ Catch2 was already suppressing the
`cppcoreguidelines-pro-type-vararg` alias of the warning
version 2.12.1:
* Vector matchers now support initializer list literals better
* Added support for `^` (bitwise xor) to `CHECK` and `REQUIRE`
version 2.12.0:
* Running tests in random order (`--order rand`) has been
reworked significantly
+ Given same seed, all platforms now produce the same order
+ Given same seed, the relative order of tests does not
change if you select only a subset of them
* Vector matchers support custom allocators
* `|` and `&` (bitwise or and bitwise and) are now supported
in `CHECK` and `REQUIRE`
+ The resulting type must be convertible to `bool`
* Fixed computation of benchmarking column widths in
ConsoleReporter
* Suppressed clang-tidy's `cppcoreguidelines-pro-type-vararg`
in assertions
+ It was a false positive trigered by the new warning
support workaround
* Fixed bug in test specification parser handling of OR'd
patterns using escaping
* Worked around IBM XL's codegen bug
+ It would emit code for _destructors_ of temporaries in an
unevaluated context
* Improved detection of stdlib's support for
`std::uncaught_exceptions`
version 2.11.2:
* GCC and Clang now issue warnings for suspicious code in
assertions
+ E.g. `REQUIRE( int != unsigned int )` will now issue mixed
signedness comparison warning
+ This has always worked on MSVC, but it now also works for
GCC and current Clang versions
* Colorization of "Test filters" output should be more robust
now
* `--wait-for-keypress` now also accepts `never` as an option
* Reporters no longer round-off nanoseconds when reporting
benchmarking results
* It is now possible to customize benchmark's warm-up time
when running the test binary
+ `--benchmark-warmup-time {ms}`
* User can now specify how Catch2 should break into debugger
* Fixes missing `<random>` include in benchmarking
* Fixed missing `<iterator>` include in benchmarking
* Hidden test cases are now also tagged with `[!hide]` as per
documentation
* Detection of whether libc provides `std::nextafter` has been
improved
* Composing already-composed matchers no longer modifies the
partially-composed matcher expression
+ This bug has been present for the last ~2 years and nobody
reported it
version 2.11.1:
* `google-build-using-namespace` clang-tidy warning is
suppressed
* `ObjectStorage` now behaves properly in `const` contexts
* `GENERATE_COPY(a, b)` now compiles properly
* Some more cleanups in the benchmarking support
-------------------------------------------------------------------
Wed Jan 8 12:55:46 UTC 2020 - Luigi Baldoni <aloisio@gmx.com>
- Use only %license
-------------------------------------------------------------------
Wed Dec 25 17:43:04 UTC 2019 - Luigi Baldoni <aloisio@gmx.com>
- Update to version 2.11.0
Improvements:
* JUnit reporter output now contains more details in case of
failure (#1347, #1719)
* Added SonarQube Test Data reporter (#1738)
+ It is in a separate header, just like the TAP, Automake,
and TeamCity reporters
* `range` generator now allows floating point numbers (#1776)
* Reworked part of internals to increase throughput
Fixes:
* The single header version should contain full benchmarking
support (#1800)
* `[.foo]` is now properly parsed as `[.][foo]` when used on
the command line (#1798)
* Fixed compilation of benchmarking on platforms where
`steady_clock::period` is not `std::nano` (#1794)
version 2.10.2
Improvements:
* Catch2 will now compile on platform where `INFINITY` is
double (#1782)
Fixes:
* Warning suppressed during listener registration will no
longer leak
version 2.10.1
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)
version 2.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`
* 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
version 2.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` 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
version 2.9.1
Fixes:
* Fix benchmarking compilation failure in files without
`CATCH_CONFIG_EXTERNAL_INTERFACES` (or implementation)
version 2.9.0
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)
version 2.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`,
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
- Drop _service file
-------------------------------------------------------------------
Sat May 18 20:37:18 UTC 2019 - Kira Marie Backes <kira@kiralein.de> - 2.7.2
- Finalize .spec of Catch2 v 2.7.2
-------------------------------------------------------------------
Sat May 18 19:31:10 UTC 2019 - Kira Marie Backes <kira@kiralein.de>
- Try to setup Catch2 as OBS project