<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/tests/SelfTest/UsageTests, branch feature/property-combinators</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>Constexpr matching support in the range equals matchers</title>
<updated>2026-05-12T09:05:33+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-05-12T08:06:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=47ea57d74f8968eae242ea1b068a9e5b257c36b1'/>
<id>47ea57d74f8968eae242ea1b068a9e5b257c36b1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Constexpr matching support in generic Contains matchers</title>
<updated>2026-05-12T09:05:31+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-05-12T08:04:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=d838f88b9c9a05d2879d29a5a54f864f823a1d64'/>
<id>d838f88b9c9a05d2879d29a5a54f864f823a1d64</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Constexpr matching support in the quantifier matchers</title>
<updated>2026-05-12T09:05:31+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-05-12T07:25:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=c267b6eb4de6d9ccdde238334c1248c7b60b8c0b'/>
<id>c267b6eb4de6d9ccdde238334c1248c7b60b8c0b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Constexpr matching support in IsEmpty and SizeIs matchers</title>
<updated>2026-05-12T09:05:29+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-05-12T06:57:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=3cdae5faf08b7a3861be5e7bf6f1968e9229f460'/>
<id>3cdae5faf08b7a3861be5e7bf6f1968e9229f460</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Support for constexpr matchers in C++20 (P0784)</title>
<updated>2026-05-12T09:05:02+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-05-10T21:05:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=651247c7f40eda6846fec736d2f9edac8949dacb'/>
<id>651247c7f40eda6846fec736d2f9edac8949dacb</id>
<content type='text'>
To make this all work, I had to remove the stringification cache
from matchers. In theory, this can cause performance penalty in
cases where single matcher instance is stringified multiple times,
but in practice this does not happen much, and the difference is
surprisingly small anyway, because the performance of stringification
is already horrible and full of allocating strings just to throw
them away.

The matcher combinators need P2738 from C++26 to be `constexpr`.

Closes #3091
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To make this all work, I had to remove the stringification cache
from matchers. In theory, this can cause performance penalty in
cases where single matcher instance is stringified multiple times,
but in practice this does not happen much, and the difference is
surprisingly small anyway, because the performance of stringification
is already horrible and full of allocating strings just to throw
them away.

The matcher combinators need P2738 from C++26 to be `constexpr`.

Closes #3091
</pre>
</div>
</content>
</entry>
<entry>
<title>Cleanups from static analysis</title>
<updated>2026-04-24T09:21:04+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-04-24T09:21:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=11a96e186af8b2779d93e550217e9c95d3f89371'/>
<id>11a96e186af8b2779d93e550217e9c95d3f89371</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Rework internals of CATCH_REGISTER_ENUM</title>
<updated>2026-04-08T10:57:09+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-04-08T08:26:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=47200ddbee03eaf4a9d3d99d18cb692381d8f5bc'/>
<id>47200ddbee03eaf4a9d3d99d18cb692381d8f5bc</id>
<content type='text'>
The old internals reached into the global hub to stash the allocation(s)
for enum value -&gt; string value there, then kept around a potentially
invalid (in case the hub was cleaned up) reference into it, going through
whole bunch of virtual dispatch in the process.

The new internals just store the data in a static variable inside the
`StringMaker` specialization. This avoids potential lifetime issues,
avoids all virtual dispatch and (almost) reduces the include bloat in
the main header path.

The reason for (almost) there is that for full include correctness,
`EnumInfo` needs `&lt;utility&gt;` include for `std::pair`. However, this brings
in things like `std::relops`, because the std headers in C++ are dumb.
As this was not included before, and instead we relied on `std::pair`
existing in an internal stdlib header that we transitively included, the
full include size ends up bigger than before.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The old internals reached into the global hub to stash the allocation(s)
for enum value -&gt; string value there, then kept around a potentially
invalid (in case the hub was cleaned up) reference into it, going through
whole bunch of virtual dispatch in the process.

The new internals just store the data in a static variable inside the
`StringMaker` specialization. This avoids potential lifetime issues,
avoids all virtual dispatch and (almost) reduces the include bloat in
the main header path.

The reason for (almost) there is that for full include correctness,
`EnumInfo` needs `&lt;utility&gt;` include for `std::pair`. However, this brings
in things like `std::relops`, because the std headers in C++ are dumb.
As this was not included before, and instead we relied on `std::pair`
existing in an internal stdlib header that we transitively included, the
full include size ends up bigger than before.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ignore Wunreachable-code-return in Generators.tests.cpp</title>
<updated>2026-04-01T09:02:56+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-04-01T09:02:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=8492fd444e42f331f48611d2b5ef11c8ce338423'/>
<id>8492fd444e42f331f48611d2b5ef11c8ce338423</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix warning suppression block in Condition.tests straddling includes</title>
<updated>2026-04-01T08:56:21+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-04-01T08:56:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=fe2a20ab555ec28af47acaeafdad6d0872f7cb82'/>
<id>fe2a20ab555ec28af47acaeafdad6d0872f7cb82</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Allow generators to declare themselves (infinite)</title>
<updated>2026-02-10T08:37:15+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-02-09T18:05:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=d079ee13ab137547ab26bd1ed5ca2858d7fbd847'/>
<id>d079ee13ab137547ab26bd1ed5ca2858d7fbd847</id>
<content type='text'>
This will be useful later to implement warning on infinitely
running `GENERATE` expressions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This will be useful later to implement warning on infinitely
running `GENERATE` expressions.
</pre>
</div>
</content>
</entry>
</feed>
