<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/tools/scripts/releaseCommon.py, branch release/catch3-next</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>Give Catch3 its own build names and headers</title>
<updated>2026-10-24T23:37:35+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-24T23:37:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=126dc333564cb72b5115d9a9242d66694694b6d0'/>
<id>126dc333564cb72b5115d9a9242d66694694b6d0</id>
<content type='text'>
Catch2 compatibility means the API tests are written in: the macros, such
as TEST_CASE and REQUIRE, and the Catch:: namespace. It does not mean
Catch2's build names or header paths. find_package(Catch2) found Catch3,
and a project using both frameworks met two packages, two sets of targets,
two Catch.cmake modules and two catch2/ header trees with the same names.

Build names:
- CMake: project and package Catch3, targets Catch3::Catch3 and
  Catch3::Catch3WithMain, libraries Catch3 and Catch3Main, options
  CATCH3_*, lib/cmake/Catch3 with Catch3Config, and pkg-config catch3 and
  catch3-with-main. The version is Catch3's, 0.3.0, compatible within a
  minor version.
- The CMake scripts are Catch3.cmake (catch3_discover_tests),
  Catch3AddTests.cmake and Catch3ShardTests.cmake
  (catch3_add_sharded_tests); the helpers they define at ctest time have a
  catch3_ prefix. ParseAndAddCatchTests.cmake, deprecated upstream, is gone.
- Bazel //:catch3 and //:catch3_main, Meson catch3 and catch3-with-main
  (with override_dependency), Xmake catch3 and catch3_main, Premake Catch3
  and Catch3WithMain. Visual Studio projects get GUIDs of their own.
- The Progmasoft::Catch3 target and package are gone: property testing
  and snapshots are part of Catch3::Catch3. Their sources now build with
  the library's warning flags, so property failures are built field by
  field (no missing initializers) and the default property name is a
  thread-local pointer to the name its scope owns (no global destructor).

Headers: the engine moved from src/catch2 to src/Progmasoft/Catch3 with
Progmasoft names, so &lt;catch2/catch_test_macros.hpp&gt; is
&lt;Progmasoft/Catch3/TestMacros.hpp&gt;, &lt;catch2/matchers/catch_matchers_string.hpp&gt;
is &lt;Progmasoft/Catch3/Matchers/String.hpp&gt;, and interface headers are named
after their interface, such as Interfaces/IConfig.hpp. Include guards
became #pragma once. The installed headers go to include/Progmasoft.
src/Progmasoft/Context.cpp is StrategyContext.cpp, so no two sources share
a file name.

tools/scripts/upstreamFiles.txt lists the files that come from Catch2.
The license check expects BSL-1.0 on them and Progmasoft's header on the
rest of src/Progmasoft; the convenience-header check, the amalgamation
script and the surrogate tests take the engine's headers from it. The
amalgamated files are regenerated. The header-guard workflow checks for
#pragma once instead of checkguard.

Documents, the README and the release notes describe the new names.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Catch2 compatibility means the API tests are written in: the macros, such
as TEST_CASE and REQUIRE, and the Catch:: namespace. It does not mean
Catch2's build names or header paths. find_package(Catch2) found Catch3,
and a project using both frameworks met two packages, two sets of targets,
two Catch.cmake modules and two catch2/ header trees with the same names.

Build names:
- CMake: project and package Catch3, targets Catch3::Catch3 and
  Catch3::Catch3WithMain, libraries Catch3 and Catch3Main, options
  CATCH3_*, lib/cmake/Catch3 with Catch3Config, and pkg-config catch3 and
  catch3-with-main. The version is Catch3's, 0.3.0, compatible within a
  minor version.
- The CMake scripts are Catch3.cmake (catch3_discover_tests),
  Catch3AddTests.cmake and Catch3ShardTests.cmake
  (catch3_add_sharded_tests); the helpers they define at ctest time have a
  catch3_ prefix. ParseAndAddCatchTests.cmake, deprecated upstream, is gone.
- Bazel //:catch3 and //:catch3_main, Meson catch3 and catch3-with-main
  (with override_dependency), Xmake catch3 and catch3_main, Premake Catch3
  and Catch3WithMain. Visual Studio projects get GUIDs of their own.
- The Progmasoft::Catch3 target and package are gone: property testing
  and snapshots are part of Catch3::Catch3. Their sources now build with
  the library's warning flags, so property failures are built field by
  field (no missing initializers) and the default property name is a
  thread-local pointer to the name its scope owns (no global destructor).

Headers: the engine moved from src/catch2 to src/Progmasoft/Catch3 with
Progmasoft names, so &lt;catch2/catch_test_macros.hpp&gt; is
&lt;Progmasoft/Catch3/TestMacros.hpp&gt;, &lt;catch2/matchers/catch_matchers_string.hpp&gt;
is &lt;Progmasoft/Catch3/Matchers/String.hpp&gt;, and interface headers are named
after their interface, such as Interfaces/IConfig.hpp. Include guards
became #pragma once. The installed headers go to include/Progmasoft.
src/Progmasoft/Context.cpp is StrategyContext.cpp, so no two sources share
a file name.

tools/scripts/upstreamFiles.txt lists the files that come from Catch2.
The license check expects BSL-1.0 on them and Progmasoft's header on the
rest of src/Progmasoft; the convenience-header check, the amalgamation
script and the surrogate tests take the engine's headers from it. The
amalgamated files are regenerated. The header-guard workflow checks for
#pragma once instead of checkguard.

Documents, the README and the release notes describe the new names.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove what Catch2's maintainers left that is not ours</title>
<updated>2026-10-24T16:07:10+00:00</updated>
<author>
<name>Leitwolf11</name>
</author>
<published>2026-10-24T16:07:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=a2edf60b9f410d26485ac7c0492870a0905f9545'/>
<id>a2edf60b9f410d26485ac7c0492870a0905f9545</id>
<content type='text'>
Catch3 is maintained by Progmasoft, but the repository still carried
Catch2's funding links, its maintainer list and GPG keys, a Code of Conduct
contact at a Catch2 maintainer's address, its lists of users, its release
process and release scripts, its AppVeyor configuration and its logos.

- Removed FUNDING.yml, MAINTAINERS.md, appveyor.yml with the AppVeyor and
  OpenCppCoverage helpers, Catch2's user lists, why-catch, release process
  and deprecations pages, its two logos and the major/minor/patch release
  scripts. releaseCommon.py keeps only what the amalgamation reads.
- The Code of Conduct sends reports to support@progmasoft.com.
- contributing.md and release-notes.md are written for Catch3; Catch2's
  release history is linked upstream.
- CMake, pkg-config and Doxygen name Catch3 and its repository; the
  amalgamated files say which Catch3 version and which Catch2 engine they
  come from.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Catch3 is maintained by Progmasoft, but the repository still carried
Catch2's funding links, its maintainer list and GPG keys, a Code of Conduct
contact at a Catch2 maintainer's address, its lists of users, its release
process and release scripts, its AppVeyor configuration and its logos.

- Removed FUNDING.yml, MAINTAINERS.md, appveyor.yml with the AppVeyor and
  OpenCppCoverage helpers, Catch2's user lists, why-catch, release process
  and deprecations pages, its two logos and the major/minor/patch release
  scripts. releaseCommon.py keeps only what the amalgamation reads.
- The Code of Conduct sends reports to support@progmasoft.com.
- contributing.md and release-notes.md are written for Catch3; Catch2's
  release history is linked upstream.
- CMake, pkg-config and Doxygen name Catch3 and its repository; the
  amalgamated files say which Catch3 version and which Catch2 engine they
  come from.
</pre>
</div>
</content>
</entry>
<entry>
<title>Release script also recognizes version placeholders in 'vX.Y.Z' form</title>
<updated>2025-07-23T22:02:48+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2025-07-23T22:02:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=900a6d55167d415736c8233354e40f8f07a35d36'/>
<id>900a6d55167d415736c8233354e40f8f07a35d36</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>releaseCommon: fix SyntaxWarning: invalid escape sequence '\s'</title>
<updated>2024-03-01T20:24:45+00:00</updated>
<author>
<name>Martin Jeřábek</name>
</author>
<published>2024-03-01T11:00:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=b20b365fd2e9697c8526d1d54e7bcb4b8af5b5cb'/>
<id>b20b365fd2e9697c8526d1d54e7bcb4b8af5b5cb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Look just for 'Catch2 X.Y.Z' in doc placeholder update</title>
<updated>2023-12-10T23:52:22+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-12-10T23:52:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=1648c30ec3ac1aedd1417d31de18801767ab0d72'/>
<id>1648c30ec3ac1aedd1417d31de18801767ab0d72</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Cleanup the helper scripts</title>
<updated>2022-11-06T20:23:16+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-11-05T23:17:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=297a17593fe6c0545fe28cfb909243ee831ac27f'/>
<id>297a17593fe6c0545fe28cfb909243ee831ac27f</id>
<content type='text'>
* Remove from __future__ import print_function, because we
  no longer support Python2.
* Clean out unused parts of tools/scripts/scriptCommon.py
* Move appveyorMergeCoverageScript to Python3
* Update user reporting in *release scripts
* Cleanup module imports
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Remove from __future__ import print_function, because we
  no longer support Python2.
* Clean out unused parts of tools/scripts/scriptCommon.py
* Move appveyorMergeCoverageScript to Python3
* Update user reporting in *release scripts
* Cleanup module imports
</pre>
</div>
</content>
</entry>
<entry>
<title>meson cleanups with muon (#2539)</title>
<updated>2022-10-03T15:23:38+00:00</updated>
<author>
<name>Rosen Penev</name>
</author>
<published>2022-10-03T15:23:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=6a9bf2e0afe7eeece351777ae2f9b8e714ecd274'/>
<id>6a9bf2e0afe7eeece351777ae2f9b8e714ecd274</id>
<content type='text'>
* meson: run through muon's fmt to fix formatting

* meson: switch arrays to files

Allows muon to alphabetically sort files. switch headers back to arrays
as split() can only be used on strings.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* meson: run through muon's fmt to fix formatting

* meson: switch arrays to files

Allows muon to alphabetically sort files. switch headers back to arrays
as split() can only be used on strings.

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Add support for building with Meson (#2530)</title>
<updated>2022-10-01T21:28:30+00:00</updated>
<author>
<name>Mike Crowe</name>
</author>
<published>2022-10-01T21:28:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=4db8b50aab9f91f31b2953455091e257942ec188'/>
<id>4db8b50aab9f91f31b2953455091e257942ec188</id>
<content type='text'>
The Meson[1] build system makes it easier incorporate third-party
libaries into a project if they also build using Meson.

Let's add a minimal Meson build that's compatible with the CMake build,
along with a GitHub workflow to check that it builds and that at least
the simplest SelfTest runs.

The handling of catch_user_config.hpp is inspired by BUILD.bazel and
doesn't attempt to support any configuratons options. Such features
could be added later.

Meson strongly discourages using wildcards to specify sources, so the
source and header lists are copied from CMakeLists.txt.

Add a new test workflow to test the Meson builds. I was unable to get
these tests to pass with Ubuntu 20.04, so they use Ubuntu 22.04.

I'm neither a CMake nor a Meson expert, but the results seem to work for
me.

[1] https://mesonbuild.com/

Co-authored-by: Mike Crowe &lt;mcrowe@brightsign.biz&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The Meson[1] build system makes it easier incorporate third-party
libaries into a project if they also build using Meson.

Let's add a minimal Meson build that's compatible with the CMake build,
along with a GitHub workflow to check that it builds and that at least
the simplest SelfTest runs.

The handling of catch_user_config.hpp is inspired by BUILD.bazel and
doesn't attempt to support any configuratons options. Such features
could be added later.

Meson strongly discourages using wildcards to specify sources, so the
source and header lists are copied from CMakeLists.txt.

Add a new test workflow to test the Meson builds. I was unable to get
these tests to pass with Ubuntu 20.04, so they use Ubuntu 22.04.

I'm neither a CMake nor a Meson expert, but the results seem to work for
me.

[1] https://mesonbuild.com/

Co-authored-by: Mike Crowe &lt;mcrowe@brightsign.biz&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Extend project call for Catch2</title>
<updated>2022-05-17T20:12:44+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-17T20:12:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=abb669d4fdaeb08ec7e087541d32e7130bc775ef'/>
<id>abb669d4fdaeb08ec7e087541d32e7130bc775ef</id>
<content type='text'>
This provides some extra metadata for CPack and related tools.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This provides some extra metadata for CPack and related tools.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix release automation script</title>
<updated>2022-05-16T16:39:01+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2022-05-16T16:39:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=04a54b0e87294cc154a03ef579c982f67735ccbc'/>
<id>04a54b0e87294cc154a03ef579c982f67735ccbc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
