<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3, branch ci/renovate</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>Merge devel into the Renovate branch</title>
<updated>2026-10-10T23:05:19+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T23:05:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=a6f9971cae971c0a181fc9f8148aacdb3e79c457'/>
<id>a6f9971cae971c0a181fc9f8148aacdb3e79c457</id>
<content type='text'>
devel gained the workflow analysis change. This branch is tested once
more against it before it merges.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
devel gained the workflow analysis change. This branch is tested once
more against it before it merges.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #2 from Progmasoft/ci/analysis-tools</title>
<updated>2026-10-10T23:05:08+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-10-10T23:05:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=5633c5c98ec073ae938253bcfc72430d5d9aee89'/>
<id>5633c5c98ec073ae938253bcfc72430d5d9aee89</id>
<content type='text'>
Add workflow and dependency analysis</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add workflow and dependency analysis</pre>
</div>
</content>
</entry>
<entry>
<title>Turn the Renovate dashboard off where issues are off</title>
<updated>2026-10-10T19:34:19+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T19:34:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=dc0b8b060557d9f3e37b74a2dc248bed2a2926ad'/>
<id>dc0b8b060557d9f3e37b74a2dc248bed2a2926ad</id>
<content type='text'>
The dashboard is an issue, and issues are disabled in this repository,
so Renovate could not create it. Pending updates show as pull requests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The dashboard is an issue, and issues are disabled in this repository,
so Renovate could not create it. Pending updates show as pull requests.
</pre>
</div>
</content>
</entry>
<entry>
<title>Hand version updates to Renovate</title>
<updated>2026-10-10T19:30:41+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T19:30:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=1478f1472c4e731b298b33b5c2763ed06ea05160'/>
<id>1478f1472c4e731b298b33b5c2763ed06ea05160</id>
<content type='text'>
Renovate proposes the version updates of this repository from now on.
It watches what Dependabot watched, looks once a week, takes a release
a week after it is published, opens one pull request for each kind of
dependency with at most two open, and rebases a pull request only when
it conflicts. A dashboard issue lists what is pending.

The Dependabot configuration is removed, which turns its version
updates off. Dependabot keeps its alerts and its security updates,
which are repository settings. Renovate does not open its own pull
requests for vulnerabilities, so one advisory does not get two fixes.

The configuration passes Renovate's validator and takes effect when
the Renovate app is installed on the repository.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Renovate proposes the version updates of this repository from now on.
It watches what Dependabot watched, looks once a week, takes a release
a week after it is published, opens one pull request for each kind of
dependency with at most two open, and rebases a pull request only when
it conflicts. A dashboard issue lists what is pending.

The Dependabot configuration is removed, which turns its version
updates off. Dependabot keeps its alerts and its security updates,
which are repository settings. Renovate does not open its own pull
requests for vulnerabilities, so one advisory does not get two fixes.

The configuration passes Renovate's validator and takes effect when
the Renovate app is installed on the repository.
</pre>
</div>
</content>
</entry>
<entry>
<title>Leave out the Scorecard workflow</title>
<updated>2026-10-10T17:27:04+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T17:27:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=398df2ea549d79ebaf87abed921d1961f59ff286'/>
<id>398df2ea549d79ebaf87abed921d1961f59ff286</id>
<content type='text'>
The owner decided against running OpenSSF Scorecard here. The workflow
added by the commit before this one is removed; nothing else changes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The owner decided against running OpenSSF Scorecard here. The workflow
added by the commit before this one is removed; nothing else changes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add workflow, repository and dependency analysis</title>
<updated>2026-10-10T17:23:52+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-10T17:23:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ba6cbc4e6fc71f7b2240f9c42f1124dc2e9b6532'/>
<id>ba6cbc4e6fc71f7b2240f9c42f1124dc2e9b6532</id>
<content type='text'>
zizmor audits the workflows themselves for what makes a workflow
unsafe, and uploads what it finds to code scanning. Its first run here
found one thing, 11 times: a checkout that leaves the job's token in
the checked-out repository, where any later step can read it. No
workflow pushes or needs the token after the checkout, so every checkout
now sets persist-credentials to false, and zizmor reports nothing.

OpenSSF Scorecard grades how the repository is kept: branch protection,
pinned dependencies, token permissions and the like. It runs on the
default branch and weekly and uploads its findings to
code scanning.

Dependency Review fails a pull request that adds or changes a dependency
with a known vulnerability of high severity or worse. Dependabot watches
what is already there; this holds what comes in.

Every new action is pinned to a commit, each job names the permissions
it needs, and no new workflow has a default permission.

Two steps of the Windows build ran in the CMD shell, which zizmor cannot

read into; they run in PowerShell now, with the same commands and the

processor count taken from the environment.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
zizmor audits the workflows themselves for what makes a workflow
unsafe, and uploads what it finds to code scanning. Its first run here
found one thing, 11 times: a checkout that leaves the job's token in
the checked-out repository, where any later step can read it. No
workflow pushes or needs the token after the checkout, so every checkout
now sets persist-credentials to false, and zizmor reports nothing.

OpenSSF Scorecard grades how the repository is kept: branch protection,
pinned dependencies, token permissions and the like. It runs on the
default branch and weekly and uploads its findings to
code scanning.

Dependency Review fails a pull request that adds or changes a dependency
with a known vulnerability of high severity or worse. Dependabot watches
what is already there; this holds what comes in.

Every new action is pinned to a commit, each job names the permissions
it needs, and no new workflow has a default permission.

Two steps of the Windows build ran in the CMD shell, which zizmor cannot

read into; they run in PowerShell now, with the same commands and the

processor count taken from the environment.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #1 from Progmasoft/feature/property-combinators</title>
<updated>2026-10-02T12:53:33+00:00</updated>
<author>
<name>Leitwolf</name>
</author>
<published>2026-10-02T12:53:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=00bd15ded1dd732472156aece844e7696454bd3a'/>
<id>00bd15ded1dd732472156aece844e7696454bd3a</id>
<content type='text'>
Add composite property generators, single-trial replay and stable counterexample printing</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add composite property generators, single-trial replay and stable counterexample printing</pre>
</div>
</content>
</entry>
<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>
</feed>
