<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/MODULE.bazel, branch build/bcr</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>Prepare the Bazel Central Registry entry as progmasoft_catch3</title>
<updated>2026-11-15T20:08:05+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-15T20:08:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=67c3ef401b34716f7214374ff0d6c24b3c50a149'/>
<id>67c3ef401b34716f7214374ff0d6c24b3c50a149</id>
<content type='text'>
- MODULE.bazel names the module progmasoft_catch3, the name it has in
  the registry, with bazel_compatibility &gt;=8.0.0; //tools:version finds
  the version under the new name.
- .bcr/ holds the templates publish-to-bcr fills: metadata, source (the
  GitHub archive of the catch3-* tag) and the presubmit, which runs the
  test module on Debian, Ubuntu, macOS (x86-64 and arm64) and Windows
  with Bazel 8.x and 9.x.
- tests/Progmasoft/BazelModule is a module that depends on Catch3 as a
  user's does, through //:catch3_main and through //:catch3 with its
  own main. The root ignores it; Bazel Builds tests it with Bazel 8.x
  and 9.x on Ubuntu and Windows.
- Publish to BCR runs when a catch3-* release is published, or by hand
  for a tag, and opens the registry pull request from the fork of the
  maintainer, without attestations.
- The integration guide says how a module depends on progmasoft_catch3.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- MODULE.bazel names the module progmasoft_catch3, the name it has in
  the registry, with bazel_compatibility &gt;=8.0.0; //tools:version finds
  the version under the new name.
- .bcr/ holds the templates publish-to-bcr fills: metadata, source (the
  GitHub archive of the catch3-* tag) and the presubmit, which runs the
  test module on Debian, Ubuntu, macOS (x86-64 and arm64) and Windows
  with Bazel 8.x and 9.x.
- tests/Progmasoft/BazelModule is a module that depends on Catch3 as a
  user's does, through //:catch3_main and through //:catch3 with its
  own main. The root ignores it; Bazel Builds tests it with Bazel 8.x
  and 9.x on Ubuntu and Windows.
- Publish to BCR runs when a catch3-* release is published, or by hand
  for a tag, and opens the registry pull request from the fork of the
  maintainer, without attestations.
- The integration guide says how a module depends on progmasoft_catch3.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</pre>
</div>
</content>
</entry>
<entry>
<title>Release Catch3 0.4.0</title>
<updated>2026-11-15T09:17:43+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-15T09:17:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6f4d3fa3328d6fb78f9a41f45282c11758872c9c'/>
<id>6f4d3fa3328d6fb78f9a41f45282c11758872c9c</id>
<content type='text'>
Every place that states the version says 0.4.0, written by
bazelisk run //tools:version -- 0.4.0, and the single-file distribution
carries it. The release notes describe the release: per-test coverage
with --coverage, secret-looking variables withheld from workers unless
--pass-env names them, the repository tools in C++17 under Bazel, and
versions with three numbers again.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Every place that states the version says 0.4.0, written by
bazelisk run //tools:version -- 0.4.0, and the single-file distribution
carries it. The release notes describe the release: per-test coverage
with --coverage, secret-looking variables withheld from workers unless
--pass-env names them, the repository tools in C++17 under Bazel, and
versions with three numbers again.

Claude-Session: https://claude.ai/code/session_01Ji7xZMYjc4zankoc7hGBE1
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge devel into feature/cpp-tools</title>
<updated>2026-11-01T21:16:57+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-01T21:16:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=3ed0fd930371823b6d44ae64d00dbd79e421a552'/>
<id>3ed0fd930371823b6d44ae64d00dbd79e421a552</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Name the Bazel targets of the tools in snake_case</title>
<updated>2026-11-01T19:19:02+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-01T19:19:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e32c9d107274f42b9cca700475404c80e96533c5'/>
<id>e32c9d107274f42b9cca700475404c80e96533c5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move the tools from Python to C++17 and Bazel</title>
<updated>2026-11-01T19:16:14+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-01T19:16:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=da3c9d0880dbd4a74e0e43f092d10f5ae42c5043'/>
<id>da3c9d0880dbd4a74e0e43f092d10f5ae42c5043</id>
<content type='text'>
The scripts in use become programs run with `bazelisk run //tools:&lt;tool&gt;`,
and arguments follow `--`:

  amalgamate     the single-file distribution; --check only compares it
  check          licenses, convenience headers, header guards, file names,
                 versions and whether the distribution is up to date
  third-party    compares third_party/ with its archives, or writes it
  version        prints the version, or moves every place that states it
  release-notes  prints a section of the release notes
  repo-info      reports the checkout and the tools on PATH; --json writes
                 it through yyjson, with the fields of Tala's repo-info

amalgamate writes what the Python script wrote, byte for byte, except for
the time of generation. That line is gone so that the output is
deterministic and --check can compare it.

MODULE.bazel now pins the archives of third_party/ by version and sha256,
so Bazel fetches and checks them instead of a tool of ours, and Renovate
reads the versions there.

Scripts nobody used are gone: fixWhitespace, updateDocumentSnippets,
buildAndTest, and updateDocumentToC, which rewrote unrelated documents.
CheckConvenienceHeaders leaves CTest, since //tools:check runs it in CI.
The Python of tests/TestScripts stays: those are tests, not tools.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The scripts in use become programs run with `bazelisk run //tools:&lt;tool&gt;`,
and arguments follow `--`:

  amalgamate     the single-file distribution; --check only compares it
  check          licenses, convenience headers, header guards, file names,
                 versions and whether the distribution is up to date
  third-party    compares third_party/ with its archives, or writes it
  version        prints the version, or moves every place that states it
  release-notes  prints a section of the release notes
  repo-info      reports the checkout and the tools on PATH; --json writes
                 it through yyjson, with the fields of Tala's repo-info

amalgamate writes what the Python script wrote, byte for byte, except for
the time of generation. That line is gone so that the output is
deterministic and --check can compare it.

MODULE.bazel now pins the archives of third_party/ by version and sha256,
so Bazel fetches and checks them instead of a tool of ours, and Renovate
reads the versions there.

Scripts nobody used are gone: fixWhitespace, updateDocumentSnippets,
buildAndTest, and updateDocumentToC, which rewrote unrelated documents.
CheckConvenienceHeaders leaves CTest, since //tools:check runs it in CI.
The Python of tests/TestScripts stays: those are tests, not tools.
</pre>
</div>
</content>
</entry>
<entry>
<title>Release Catch3 0.3.0.2</title>
<updated>2026-11-01T18:42:34+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-01T18:42:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e1b0a9d000645b5e914f00603983df16167bd053'/>
<id>e1b0a9d000645b5e914f00603983df16167bd053</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Release Catch3 0.3.0.1</title>
<updated>2026-11-01T13:20:17+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-01T13:20:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=64e7fffb605cc355d258f4896c49cdec6127ed6b'/>
<id>64e7fffb605cc355d258f4896c49cdec6127ed6b</id>
<content type='text'>
Versions have four numbers from this release on.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Versions have four numbers from this release on.
</pre>
</div>
</content>
</entry>
<entry>
<title>Release Catch3 0.3.0</title>
<updated>2026-11-01T04:05:43+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-11-01T04:05:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9cbae73cf68787fb0a55693db0a5782979930750'/>
<id>9cbae73cf68787fb0a55693db0a5782979930750</id>
<content type='text'>
The release notes get their date and name the tag prefix Catch3 uses from
now on. Every other version location already says 0.3.0; MODULE.bazel was
the one left.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The release notes get their date and name the tag prefix Catch3 uses from
now on. Every other version location already says 0.3.0; MODULE.bazel was
the one left.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Pin rules_swift 3.4.2 so Bazel works on Windows hosts with Swift</title>
<updated>2026-10-22T23:22:49+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-22T23:22:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=82521713785fa46135c0c143e5cfb1715c210b57'/>
<id>82521713785fa46135c0c143e5cfb1715c210b57</id>
<content type='text'>
rules_swift reaches the module graph through protobuf and rules_apple,
resolved to 3.1.2. Its Windows autoconfiguration runs whenever
swiftc.exe is on PATH and, up to 3.4.1, writes a toolchain that
indexes APPLE_PLATFORMS_CONSTRAINTS with the undefined name arch, so
every Bazel build on such a host failed in analysis with "name 'arch'
is not defined". The hosted runners have no Swift, which is why CI
never saw it.

A single_version_override selects 3.4.2, the first fixed release with
the same compatibility level. It needs protobuf 29 and apple_support
1.24.2, both already satisfied by the graph (protobuf stays at 33.4);
nlohmann_json, only used by rules_swift's own tools, moves to
3.12.0.bcr.1 in the lockfile.

Verified on Windows with Swift 6.4.1 on PATH: bazel test
//tests/Progmasoft:property_tests passes, where it failed before.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
rules_swift reaches the module graph through protobuf and rules_apple,
resolved to 3.1.2. Its Windows autoconfiguration runs whenever
swiftc.exe is on PATH and, up to 3.4.1, writes a toolchain that
indexes APPLE_PLATFORMS_CONSTRAINTS with the undefined name arch, so
every Bazel build on such a host failed in analysis with "name 'arch'
is not defined". The hosted runners have no Swift, which is why CI
never saw it.

A single_version_override selects 3.4.2, the first fixed release with
the same compatibility level. It needs protobuf 29 and apple_support
1.24.2, both already satisfied by the graph (protobuf stays at 33.4);
nlohmann_json, only used by rules_swift's own tools, moves to
3.12.0.bcr.1 in the lockfile.

Verified on Windows with Swift 6.4.1 on PATH: bazel test
//tests/Progmasoft:property_tests passes, where it failed before.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</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>
</feed>
