diff options
| author | Leitwolf11 | 2026-09-24 22:07:03 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-09-24 22:07:03 +0300 |
| commit | 9ad804cedf4cc4a85ef89fe097f97a3b44654360 (patch) | |
| tree | f088e919776b22d19387377bdbec727daa2429c0 /.github/workflows | |
| parent | 02f8b5593a15cdec8558256e6f40a0c7fb5862d6 (diff) | |
| download | catch3-0.1.0.tar.gz | |
Add Progmasoft Catch3 property testing and build support0.1.0
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.
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/alternative-build-systems.yml | 64 | ||||
| -rw-r--r-- | .github/workflows/linux-bazel-builds.yml | 28 | ||||
| -rw-r--r-- | .github/workflows/linux-meson-builds.yml | 48 | ||||
| -rw-r--r-- | .github/workflows/linux-other-builds.yml | 129 | ||||
| -rw-r--r-- | .github/workflows/linux-simple-builds.yml | 109 | ||||
| -rw-r--r-- | .github/workflows/meson-builds.yml | 42 | ||||
| -rw-r--r-- | .github/workflows/package-manager-builds.yaml | 3 | ||||
| -rw-r--r-- | .github/workflows/validate-header-guards.yml | 2 |
8 files changed, 109 insertions, 316 deletions
diff --git a/.github/workflows/alternative-build-systems.yml b/.github/workflows/alternative-build-systems.yml new file mode 100644 index 00000000..7f2cf531 --- /dev/null +++ b/.github/workflows/alternative-build-systems.yml @@ -0,0 +1,64 @@ +name: Alternative Build Systems + +on: [push, pull_request] + +jobs: + xmake: + name: Xmake on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-2025, macos-15] + + steps: + - uses: actions/checkout@v6 + + - uses: xmake-io/github-action-setup-xmake@v1 + with: + xmake-version: '3.1.1' + + - name: Configure Clang build + run: xmake f --toolchain=clang -m debug -y + + - name: Build + run: xmake -j 4 + + - name: Run property tests + run: xmake run ProgmasoftPropertyTests + + premake: + name: Premake on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-2022, macos-15] + + steps: + - uses: actions/checkout@v6 + + - uses: abel0b/setup-premake@v2.4 + with: + version: '5.0.0-beta7' + + - name: Generate and build Visual Studio projects + if: runner.os == 'Windows' + shell: pwsh + run: | + premake5 vs2022 + msbuild build/premake/Catch3.sln /m /p:Configuration=Debug /p:Platform=x64 /nologo + + - name: Run property tests on Windows + if: runner.os == 'Windows' + run: build/premake/bin/Debug/ProgmasoftPropertyTests.exe + + - name: Generate and build Clang Makefiles + if: runner.os == 'macOS' + run: | + premake5 gmake + make -C build/premake config=debug -j 4 + + - name: Run property tests on macOS + if: runner.os == 'macOS' + run: build/premake/bin/Debug/ProgmasoftPropertyTests diff --git a/.github/workflows/linux-bazel-builds.yml b/.github/workflows/linux-bazel-builds.yml deleted file mode 100644 index 20060405..00000000 --- a/.github/workflows/linux-bazel-builds.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Linux Builds (Bazel) - -on: [push, pull_request] - -env: - CTEST_OUTPUT_ON_FAILURE: 1 - CTEST_NO_TESTS_ACTION: error - -jobs: - build_and_test_ubuntu: - name: Linux Ubuntu 22.04 Bazel build <GCC 11.2.0> - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - compilation_mode: [fastbuild, dbg, opt] - - steps: - - uses: actions/checkout@v6 - - - name: Mount Bazel cache - uses: actions/cache@v5 - with: - path: "/home/runner/.cache/bazel" - key: bazel-ubuntu22-gcc11 - - - name: Build - run: bazelisk build --compilation_mode=${{matrix.compilation_mode}} //... diff --git a/.github/workflows/linux-meson-builds.yml b/.github/workflows/linux-meson-builds.yml deleted file mode 100644 index 5240c7cb..00000000 --- a/.github/workflows/linux-meson-builds.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Linux Builds (Meson) - -on: [push, pull_request] - -env: - CTEST_OUTPUT_ON_FAILURE: 1 - CTEST_NO_TESTS_ACTION: error - -jobs: - build: - name: meson ${{matrix.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}} - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - cxx: - - g++-11 - - clang++-11 - build_type: [debug, release] - std: [14, 17] - include: - - cxx: clang++-11 - other_pkgs: clang-11 - - steps: - - uses: actions/checkout@v6 - - - name: Prepare environment - run: | - sudo apt-get update - sudo apt-get install -y meson ninja-build ${{matrix.other_pkgs}} - - - name: Configure - env: - CXX: ${{matrix.cxx}} - CXXFLAGS: -std=c++${{matrix.std}} ${{matrix.cxxflags}} - # Note: $GITHUB_WORKSPACE is distinct from ${{runner.workspace}}. - # This is important - run: | - meson -Dbuildtype=${{matrix.build_type}} ${{runner.workspace}}/meson-build - - - name: Build - working-directory: ${{runner.workspace}}/meson-build - run: ninja - - - name: Test - working-directory: ${{runner.workspace}}/meson-build - run: meson test --verbose diff --git a/.github/workflows/linux-other-builds.yml b/.github/workflows/linux-other-builds.yml deleted file mode 100644 index 188a1891..00000000 --- a/.github/workflows/linux-other-builds.yml +++ /dev/null @@ -1,129 +0,0 @@ -# The builds in this file are more complex (e.g. they need custom CMake -# configuration) and thus are unsuitable to the simple build matrix -# approach used in simple-builds -name: Linux Builds (Complex) - -on: [push, pull_request] - -env: - CTEST_OUTPUT_ON_FAILURE: 1 - CTEST_NO_TESTS_ACTION: error - -jobs: - build: - name: ${{matrix.build_description}}, ${{matrix.cxx}}, C++${{matrix.std}} ${{matrix.build_type}} - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - # We add builds one by one in this case, because there are no - # dimensions that are shared across the builds - include: - - # Single surrogate header build - - cxx: clang++-14 - build_description: Surrogates build - build_type: Debug - std: 14 - other_pkgs: clang-14 - cmake_configurations: -DCATCH_BUILD_SURROGATES=ON - - # Extras and examples with gcc-11 - - cxx: g++-11 - build_description: Extras + Examples - build_type: Debug - std: 14 - other_pkgs: g++-11 - cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON - - cxx: g++-11 - build_description: Extras + Examples - build_type: Release - std: 14 - other_pkgs: g++-11 - cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON - - # Extras and examples with Clang-14 - - cxx: clang++-14 - build_description: Extras + Examples - build_type: Debug - std: 17 - other_pkgs: clang-14 - cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON - - cxx: clang++-14 - build_description: Extras + Examples - build_type: Release - std: 17 - other_pkgs: clang-14 - cmake_configurations: -DCATCH_BUILD_EXTRA_TESTS=ON -DCATCH_BUILD_EXAMPLES=ON -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON - - # Configure tests with Clang-14 - - cxx: clang++-14 - build_description: CMake configuration tests - build_type: Debug - std: 14 - other_pkgs: clang-14 - cmake_configurations: -DCATCH_ENABLE_CONFIGURE_TESTS=ON - - # Valgrind test Clang-14 - # - cxx: clang++-14 - # build_description: Valgrind tests - # build_type: Debug - # std: 14 - # other_pkgs: clang-14 valgrind - # cmake_configurations: -DMEMORYCHECK_COMMAND=`which valgrind` -DMEMORYCHECK_COMMAND_OPTIONS="-q --track-origins=yes --leak-check=full --num-callers=50 --show-leak-kinds=definite --error-exitcode=1" - # other_ctest_args: -T memcheck -LE uses-python - - - steps: - - uses: actions/checkout@v6 - - - name: Prepare environment - run: | - sudo apt-get update - sudo apt-get install -y ninja-build ${{matrix.other_pkgs}} - - - name: Configure build - run: | - cmake --preset basic-tests -GNinja \ - -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ - -DCMAKE_CXX_COMPILER=${{matrix.cxx}} \ - -DCMAKE_CXX_STANDARD=${{matrix.std}} \ - ${{matrix.cmake_configurations}} - - - name: Build - run: cmake --build build - - - name: Test - run: ctest --test-dir build -j - - clang-tidy: - name: clang-tidy - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v6 - - - name: Prepare environment - run: | - sudo apt-get update - sudo apt-get install -y ninja-build clang-15 clang-tidy-15 - - - name: Configure - run: | - clangtidy="clang-tidy-15;-use-color" - # Use a dummy compiler/linker/ar/ranlib to effectively disable the - # compilation and only run clang-tidy. - cmake --preset basic-tests -GNinja \ - -DCMAKE_AR=/usr/bin/true \ - -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_CXX_CLANG_TIDY="$clangtidy" \ - -DCMAKE_CXX_COMPILER_AR=/usr/bin/true \ - -DCMAKE_CXX_COMPILER_LAUNCHER=/usr/bin/true \ - -DCMAKE_CXX_COMPILER=clang++-15 \ - -DCMAKE_CXX_LINK_EXECUTABLE=/usr/bin/true \ - -DCMAKE_CXX_STANDARD=17 \ - -DCMAKE_RANLIB=/usr/bin/true \ - -DCATCH_BUILD_EXAMPLES=ON \ - -DCATCH_ENABLE_CMAKE_HELPER_TESTS=ON - - - name: Run clang-tidy - run: cmake --build build diff --git a/.github/workflows/linux-simple-builds.yml b/.github/workflows/linux-simple-builds.yml deleted file mode 100644 index 17962cb8..00000000 --- a/.github/workflows/linux-simple-builds.yml +++ /dev/null @@ -1,109 +0,0 @@ -name: Linux Builds (Basic) - -on: [push, pull_request] - -env: - CTEST_OUTPUT_ON_FAILURE: 1 - CTEST_NO_TESTS_ACTION: error - -jobs: - build: - name: ${{matrix.cxx}}, C++${{matrix.std}}, ${{matrix.build_type}} - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - cxx: - - g++-9 - - g++-10 - - g++-11 - - g++-12 - - clang++-6.0 - - clang++-7 - - clang++-8 - - clang++-9 - - clang++-10 - - clang++-11 - - clang++-12 - - clang++-13 - - clang++-14 - build_type: [Debug, Release] - std: [14] - include: - - cxx: g++-9 - other_pkgs: g++-9 - - cxx: g++-10 - other_pkgs: g++-10 - - cxx: g++-11 - other_pkgs: g++-11 - - cxx: g++-12 - other_pkgs: g++-12 - - cxx: clang++-6.0 - other_pkgs: clang-6.0 - - cxx: clang++-7 - other_pkgs: clang-7 - - cxx: clang++-8 - other_pkgs: clang-8 - - cxx: clang++-9 - other_pkgs: clang-9 - - cxx: clang++-10 - other_pkgs: clang-10 - - cxx: clang++-11 - other_pkgs: clang-11 - - cxx: clang++-12 - other_pkgs: clang-12 - - cxx: clang++-13 - other_pkgs: clang-13 - - cxx: clang++-14 - other_pkgs: clang-14 - # Clang 14 + C++17 - - cxx: clang++-14 - build_type: Debug - std: 17 - other_pkgs: clang-14 - - cxx: clang++-14 - build_type: Release - std: 17 - other_pkgs: clang-14 - - cxx: clang++-14 - build_type: Debug - std: 20 - other_pkgs: clang-14 - - cxx: clang++-14 - build_type: Release - std: 20 - other_pkgs: clang-14 - - cxx: g++-11 - build_type: Debug - std: 20 - other_pkgs: g++-11 - - cxx: g++-11 - build_type: Release - std: 20 - other_pkgs: g++-11 - - steps: - - uses: actions/checkout@v6 - - - name: Add repositories for older compilers - run: | - sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ focal main' - sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ focal universe' - - - name: Prepare environment - run: | - sudo apt-get update - sudo apt-get install -y ninja-build ${{matrix.other_pkgs}} - - - name: Configure - run: | - cmake --preset basic-tests -GNinja \ - -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \ - -DCMAKE_CXX_COMPILER=${{matrix.cxx}} \ - -DCMAKE_CXX_STANDARD=${{matrix.std}} - - - name: Build - run: cmake --build build - - - name: Test - run: ctest --test-dir build -j diff --git a/.github/workflows/meson-builds.yml b/.github/workflows/meson-builds.yml new file mode 100644 index 00000000..e7ff79af --- /dev/null +++ b/.github/workflows/meson-builds.yml @@ -0,0 +1,42 @@ +name: Meson Builds + +on: [push, pull_request] + +jobs: + build: + name: Meson on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-2025, macos-15] + + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-python@v6 + with: + python-version: '3.14' + + - name: Install Meson and Ninja + run: python -m pip install meson ninja + + - name: Configure with Clang-CL on Windows + if: runner.os == 'Windows' + env: + CC: clang-cl + CXX: clang-cl + run: meson setup build/meson --vsenv -Dtests=true -Dinstall=false + + - name: Configure with Apple Clang on macOS + if: runner.os == 'macOS' + env: + CC: clang + CXX: clang++ + run: meson setup build/meson -Dtests=true -Dinstall=false + + - name: Build + run: meson compile -C build/meson + + - name: Test + run: meson test -C build/meson --print-errorlogs diff --git a/.github/workflows/package-manager-builds.yaml b/.github/workflows/package-manager-builds.yaml index 5754205d..8874b10a 100644 --- a/.github/workflows/package-manager-builds.yaml +++ b/.github/workflows/package-manager-builds.yaml @@ -5,9 +5,10 @@ on: [push, pull_request] jobs: conan_builds: name: Conan ${{matrix.conan_version}} - runs-on: ubuntu-22.04 + runs-on: ${{matrix.os}} strategy: matrix: + os: [macos-15, windows-2025] conan_version: - '1.63' - '2.1' diff --git a/.github/workflows/validate-header-guards.yml b/.github/workflows/validate-header-guards.yml index e6a1a190..bb82bd84 100644 --- a/.github/workflows/validate-header-guards.yml +++ b/.github/workflows/validate-header-guards.yml @@ -5,7 +5,7 @@ on: [push, pull_request] jobs: build: # Set the type of machine to run on - runs-on: ubuntu-22.04 + runs-on: macos-15 steps: - name: Checkout source code |