<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src, 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>Add composite property generators, single-trial replay and stable counterexample printing</title>
<updated>2026-10-02T00:27:05+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-02T00:27:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5d55a3226360fae1eaa5ef91908b0fa7d7d07234'/>
<id>5d55a3226360fae1eaa5ef91908b0fa7d7d07234</id>
<content type='text'>
Property tests could only generate one integer or Boolean. This adds the
composite strategies the documentation listed as missing, without changing
any Catch2 file or the existing Progmasoft API.

Generators:
- Tuple(generators...) draws components left to right and shrinks one
  component at a time, which is how a property receives several arguments.
- Vector(element, minimumSize, maximumSize) and Text(alphabet,
  minimumLength, maximumLength) share one ordered shrink: shortest allowed
  prefix, the two halves, single removals, then single element
  simplifications. A shrunk value never falls below its minimum, each step
  offers at most 256 candidates, and a size limit above 1,048,576 is
  rejected.
- Element(values) picks from a fixed list and shrinks toward earlier
  entries.

Runner:
- PropertyOptions::ReplayTrialSeed runs exactly one trial with a reported
  replay seed, including its shrinking, so a failure from a log can be
  reproduced without rerunning earlier trials. The report now ends with the
  line that names this option and the seed.
- Counterexamples of tuples, pairs and vectors are printed element by
  element instead of relying on Catch2's optional string makers, so the
  report does not depend on configuration macros or include order.

The headers still compile for clients built without language exceptions.
Thirteen new test cases cover bounds, determinism, shrink order, candidate
limits, minimized counterexamples, replay and invalid configurations, and
every build description (Bazel, CMake, Meson, Xmake, Premake) lists the new
headers and test file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Property tests could only generate one integer or Boolean. This adds the
composite strategies the documentation listed as missing, without changing
any Catch2 file or the existing Progmasoft API.

Generators:
- Tuple(generators...) draws components left to right and shrinks one
  component at a time, which is how a property receives several arguments.
- Vector(element, minimumSize, maximumSize) and Text(alphabet,
  minimumLength, maximumLength) share one ordered shrink: shortest allowed
  prefix, the two halves, single removals, then single element
  simplifications. A shrunk value never falls below its minimum, each step
  offers at most 256 candidates, and a size limit above 1,048,576 is
  rejected.
- Element(values) picks from a fixed list and shrinks toward earlier
  entries.

Runner:
- PropertyOptions::ReplayTrialSeed runs exactly one trial with a reported
  replay seed, including its shrinking, so a failure from a log can be
  reproduced without rerunning earlier trials. The report now ends with the
  line that names this option and the seed.
- Counterexamples of tuples, pairs and vectors are printed element by
  element instead of relying on Catch2's optional string makers, so the
  report does not depend on configuration macros or include order.

The headers still compile for clients built without language exceptions.
Thirteen new test cases cover bounds, determinism, shrink order, candidate
limits, minimized counterexamples, replay and invalid configurations, and
every build description (Bazel, CMake, Meson, Xmake, Premake) lists the new
headers and test file.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid mixed-mode libc++ container annotations in Catch3 stream reuse: store released stream indices in a node-based list so ASan-instrumented clients can link the uninstrumented library without vector relocation false positives; preserve public API and third-party build flags</title>
<updated>2026-09-29T20:00:34+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-29T20:00:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=febb5b1e244174da0985b9994f8d5ed1676950e8'/>
<id>febb5b1e244174da0985b9994f8d5ed1676950e8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Support exception-free clients in Catch3 property headers</title>
<updated>2026-09-29T16:54:42+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-29T16:54:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=a870d0a4b37c2840db4eeaaaaf57b4eab4db75d3'/>
<id>a870d0a4b37c2840db4eeaaaaf57b4eab4db75d3</id>
<content type='text'>
Preserve the existing exception-throwing and exception-catching API when language exceptions are enabled. Compile the property evaluator, shrinker and value formatter without try/catch for clients using -fno-exceptions, and fail loudly on invalid generator range or missing callbacks instead of requiring throw expressions in those translation units.

Export the new diagnostic helper through Bazel and Meson header installations. This changes neither the upstream Catch2 implementation nor its compiler flags.

Validation: Clang++ C++20 syntax checks passed for property generators with exceptions both disabled and enabled; changed headers were formatted and git diff --check passed. The consuming compiler's Linux/Windows/macOS CI will verify the integration.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Preserve the existing exception-throwing and exception-catching API when language exceptions are enabled. Compile the property evaluator, shrinker and value formatter without try/catch for clients using -fno-exceptions, and fail loudly on invalid generator range or missing callbacks instead of requiring throw expressions in those translation units.

Export the new diagnostic helper through Bazel and Meson header installations. This changes neither the upstream Catch2 implementation nor its compiler flags.

Validation: Clang++ C++20 syntax checks passed for property generators with exceptions both disabled and enabled; changed headers were formatted and git diff --check passed. The consuming compiler's Linux/Windows/macOS CI will verify the integration.
</pre>
</div>
</content>
</entry>
<entry>
<title>Backport upstream range-header and Clang diagnostic fixes</title>
<updated>2026-09-29T14:45:59+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-29T14:45:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=1f2ec07fdfe05af6df9a573f2c16551e91eef3a6'/>
<id>1f2ec07fdfe05af6df9a573f2c16551e91eef3a6</id>
<content type='text'>
Review Catch2 devel through 222e233903d287cda4713fb08e1a959e8d71fd6d. Add the direct cassert dependency to the range generator and preserve the upstream Clang pointer-to-bool diagnostic boundary in reusable streams. Record reviewed upstream revisions without changing compiler options, licensing, or fork-owned APIs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Review Catch2 devel through 222e233903d287cda4713fb08e1a959e8d71fd6d. Add the direct cassert dependency to the range generator and preserve the upstream Clang pointer-to-bool diagnostic boundary in reusable streams. Record reviewed upstream revisions without changing compiler options, licensing, or fork-owned APIs.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix macOS exit-guard error handling build</title>
<updated>2026-09-27T22:17:48+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-27T22:17:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=bf6f0aba4b5fc4ee47a3dd99650993494b26e090'/>
<id>bf6f0aba4b5fc4ee47a3dd99650993494b26e090</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Harden Catch3 exit guards and pin build workflows</title>
<updated>2026-09-27T22:10:14+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-27T22:10:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=97328fefe9650c84b594f1cea212c48562e1745b'/>
<id>97328fefe9650c84b594f1cea212c48562e1745b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add snapshots and JUnit result serialization</title>
<updated>2026-09-24T20:05:47+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-24T20:05:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=d79b294903e4d0f4b24fdf1cc50be4b0fec7f745'/>
<id>d79b294903e4d0f4b24fdf1cc50be4b0fec7f745</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Progmasoft Catch3 property testing and build support</title>
<updated>2026-09-24T19:07:03+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-09-24T19:07:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9ad804cedf4cc4a85ef89fe097f97a3b44654360'/>
<id>9ad804cedf4cc4a85ef89fe097f97a3b44654360</id>
<content type='text'>
Introduce deterministic property execution, built-in generators, shrinking, replayable seeds, and a separate Progmasoft-owned header API while preserving Catch2 compatibility targets and the C++14 engine baseline.

Add Bazel, Meson, Xmake, and Premake integration and tests alongside the existing CMake build. Replace Linux-only workflow coverage with Windows and macOS jobs and document the Catch2/Catch3 distinction.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce deterministic property execution, built-in generators, shrinking, replayable seeds, and a separate Progmasoft-owned header API while preserving Catch2 compatibility targets and the C++14 engine baseline.

Add Bazel, Meson, Xmake, and Premake integration and tests alongside the existing CMake build. Replace Linux-only workflow coverage with Windows and macOS jobs and document the Catch2/Catch3 distinction.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix typos in comments</title>
<updated>2026-09-14T11:23:10+00:00</updated>
<author>
<name>anarch</name>
</author>
<published>2026-09-13T04:39:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=889700e9799becb812ebb2c0fcf3b888f975e0ea'/>
<id>889700e9799becb812ebb2c0fcf3b888f975e0ea</id>
<content type='text'>
Three misspellings in comments: "reuired" -&gt; "required",
"ambigous" -&gt; "ambiguous", "neccessarily" -&gt; "necessarily".

Per docs/contributing.md, the amalgamated files under extras/ are left
untouched even though they carry the same typos.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Three misspellings in comments: "reuired" -&gt; "required",
"ambigous" -&gt; "ambiguous", "neccessarily" -&gt; "necessarily".

Per docs/contributing.md, the amalgamated files under extras/ are left
untouched even though they carry the same typos.

Co-Authored-By: Claude Opus 5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Better handling of ANSI escape codes in TextFlow</title>
<updated>2026-09-13T21:35:34+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2026-09-13T21:35:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=8e2f6f7a876e127a08b1864d028199d6e0961fc6'/>
<id>8e2f6f7a876e127a08b1864d028199d6e0961fc6</id>
<content type='text'>
The new implementation keeps track of found escape codes in a separate
vector, which has two advantages:
1) The handling of inputs without any escape codes is much faster. As
   this will be the case for majority of inputs, this should provide
   nice speedup all around.
2) We no longer mangle unrelated 0xFFs in the user-provided input.

Closes #3199
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The new implementation keeps track of found escape codes in a separate
vector, which has two advantages:
1) The handling of inputs without any escape codes is much faster. As
   this will be the case for majority of inputs, this should provide
   nice speedup all around.
2) We no longer mangle unrelated 0xFFs in the user-provided input.

Closes #3199
</pre>
</div>
</content>
</entry>
</feed>
