<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src, branch v3.9.1</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>v3.9.1</title>
<updated>2025-08-08T22:30:23+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-08-08T22:30:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=644821ce28cb25d7992a4d0375b1d83214392592'/>
<id>644821ce28cb25d7992a4d0375b1d83214392592</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor CATCH_TRAP selection logic to prefer compiler-specific impls</title>
<updated>2025-08-07T22:01:38+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-08-07T16:17:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9a3d68315b92ea00dc7f85966774ffea57432cc0'/>
<id>9a3d68315b92ea00dc7f85966774ffea57432cc0</id>
<content type='text'>
Primarily this means that with Clang we use `__builtin_debugtrap`
if available.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Primarily this means that with Clang we use `__builtin_debugtrap`
if available.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cleanup WIP changes from last commit</title>
<updated>2025-08-02T08:21:41+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-08-02T08:21:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9b3f508a1b1579f5366cf83d19822cb395f23528'/>
<id>9b3f508a1b1579f5366cf83d19822cb395f23528</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Catch exceptions from StringMakers inside Detail::stringify</title>
<updated>2025-08-02T08:11:52+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-08-01T21:23:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=c5e0ef4e67639e6001dc6f24b210ee9b1f0a7c1f'/>
<id>c5e0ef4e67639e6001dc6f24b210ee9b1f0a7c1f</id>
<content type='text'>
This stops tests failing falsely if the assertion passed, but the
stringification itself failed as the assertion was sent to the reporter.

I don't think that stringification should be fallible, but the
overhead in compilation ended up being small enough (&lt;0.5% on `SelfTest`)
that it might be worth implementing, in case there is more users
with weird `StringMaker`s than just MongoDB.

Closes #2980
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This stops tests failing falsely if the assertion passed, but the
stringification itself failed as the assertion was sent to the reporter.

I don't think that stringification should be fallible, but the
overhead in compilation ended up being small enough (&lt;0.5% on `SelfTest`)
that it might be worth implementing, in case there is more users
with weird `StringMaker`s than just MongoDB.

Closes #2980
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix StringMaker for time_point&lt;system_clock&gt; with non-default duration</title>
<updated>2025-08-02T06:31:34+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-08-01T21:00:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=17fe5eaa5c0c28e7a6a197420f0f16b085a8fa9a'/>
<id>17fe5eaa5c0c28e7a6a197420f0f16b085a8fa9a</id>
<content type='text'>
Fixes #2685
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #2685
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix warning in `catch_unique_ptr::bool()`</title>
<updated>2025-08-01T22:15:06+00:00</updated>
<author>
<name>Tim Lyon</name>
</author>
<published>2025-08-01T15:34:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=fbfd13501ca288e5ffeb725328827786abb99d23'/>
<id>fbfd13501ca288e5ffeb725328827786abb99d23</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add enum types to what is captured by value by default</title>
<updated>2025-07-30T18:20:38+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-29T21:51:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ccabd4de891e749f472121497941bb9437b83c2e'/>
<id>ccabd4de891e749f472121497941bb9437b83c2e</id>
<content type='text'>
As it turns out, enums can be used to declare bitfields, and we
cannot form a reference to a bitfield in the cpature. Thus, we add
`std::is_enum` as a criteria to the default for `capture_by_value`,
so that enum-based bitfields are also captured by value and thus
decomposable.

Closes #3001
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As it turns out, enums can be used to declare bitfields, and we
cannot form a reference to a bitfield in the cpature. Thus, we add
`std::is_enum` as a criteria to the default for `capture_by_value`,
so that enum-based bitfields are also captured by value and thus
decomposable.

Closes #3001
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't follow __assume(false) with std::terminate in NDEBUG builds</title>
<updated>2025-07-28T09:03:46+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-28T09:03:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=a1c7ee115f17c1e83b382f33ef2614070974626f'/>
<id>a1c7ee115f17c1e83b382f33ef2614070974626f</id>
<content type='text'>
Having `std::terminate` as the backstop after `__assume(false)`
would trigger W4702 (unreachable code) with MSVC. As we want to
keep `__assume(false)` for the optimization hint in NDEBUG builds,
we have to avoid mixing in `std::terminate` for those builds.

Fixes #3007
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Having `std::terminate` as the backstop after `__assume(false)`
would trigger W4702 (unreachable code) with MSVC. As we want to
keep `__assume(false)` for the optimization hint in NDEBUG builds,
we have to avoid mixing in `std::terminate` for those builds.

Fixes #3007
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix bad error reporting for nested exceptions in default configuration</title>
<updated>2025-07-27T19:41:02+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-27T18:28:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=d547cae549f484dda3c6a2b3cc5f71b9db40e842'/>
<id>d547cae549f484dda3c6a2b3cc5f71b9db40e842</id>
<content type='text'>
Bad handling of `TestFailureException` when translating unexpected
exceptions inside assertion macros led to the unexpected exceptions
handling erroring out through throwing the same exception again.

This was then backstopped by the machinery for handling uncaught
exceptions from assertions, which is normally used by the
`CATCH_CONFIG_FAST_COMPILE` machinery, where we assume that it can
only be invoked because the assertion macros are not configured to
catch assertions.

Closes #1292
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Bad handling of `TestFailureException` when translating unexpected
exceptions inside assertion macros led to the unexpected exceptions
handling erroring out through throwing the same exception again.

This was then backstopped by the machinery for handling uncaught
exceptions from assertions, which is normally used by the
`CATCH_CONFIG_FAST_COMPILE` machinery, where we assume that it can
only be invoked because the assertion macros are not configured to
catch assertions.

Closes #1292
</pre>
</div>
</content>
</entry>
<entry>
<title>v3.9.0</title>
<updated>2025-07-24T20:01:46+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-24T20:01:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=fee81626d2a4811095c3a39d20fb355eeb954101'/>
<id>fee81626d2a4811095c3a39d20fb355eeb954101</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
