diff options
| author | Leitwolf11 | 2026-10-25 02:37:35 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-10-25 02:37:35 +0300 |
| commit | 126dc333564cb72b5115d9a9242d66694694b6d0 (patch) | |
| tree | 0bce4462b2e190c39b3e1c5f697e3e4abd1a5e2a /tools/scripts/checkLicense.py | |
| parent | 13f81a480a93807c14dddb5abdb97355ced4d4c5 (diff) | |
| download | catch3-126dc333564cb72b5115d9a9242d66694694b6d0.tar.gz | |
Give Catch3 its own build names and headers
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 <catch2/catch_test_macros.hpp> is
<Progmasoft/Catch3/TestMacros.hpp>, <catch2/matchers/catch_matchers_string.hpp>
is <Progmasoft/Catch3/Matchers/String.hpp>, 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.
Diffstat (limited to 'tools/scripts/checkLicense.py')
| -rwxr-xr-x | tools/scripts/checkLicense.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/tools/scripts/checkLicense.py b/tools/scripts/checkLicense.py index 827c94b7..9e1e24ae 100755 --- a/tools/scripts/checkLicense.py +++ b/tools/scripts/checkLicense.py @@ -4,6 +4,8 @@ import sys import glob from pathlib import Path +from scriptCommon import upstreamFiles + correct_licence = """\ // Copyright Catch2 Authors @@ -19,11 +21,15 @@ progmasoft_licence = """\ // SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 """ +upstream_files = upstreamFiles() + def check_licence_in_file(filename: str) -> bool: - # Keep upstream files on BSL-1.0 while checking the fork's own source - # and tests against their separate MPL exception header. - expected = (progmasoft_licence if 'Progmasoft' in Path(filename).parts - else correct_licence) + # Files that come from Catch2 keep BSL-1.0; the fork's own source and + # tests carry the MPL header with Progmasoft's exception. + relative = filename.replace('\\', '/') + progmasoft = ('Progmasoft' in Path(filename).parts + and relative not in upstream_files) + expected = progmasoft_licence if progmasoft else correct_licence with open(filename, 'r', encoding='utf-8') as f: file_preamble = f.read(len(expected)) @@ -44,7 +50,7 @@ def check_licences_in_path(path: str) -> int: def check_licences(): failed = 0 # Add 'extras' after the amalgamated files are regenerated with the new script (past 3.4.0) - roots = ['src/catch2', 'src/Progmasoft', 'tests', 'examples', 'fuzzing'] + roots = ['src/Progmasoft', 'tests', 'examples', 'fuzzing'] for root in roots: failed += check_licences_in_path(root) |