name: Regression tests on: pull_request: branches-ignore: - docs push: branches-ignore: - docs workflow_dispatch: jobs: regression-tests: name: ${{ matrix.shortosname }} | ${{ matrix.compiler }} | ${{ matrix.cxx_std }} | ${{ matrix.stdlib }} | ${{ matrix.os }} runs-on: ${{ matrix.os }} env: CXX: ${{ matrix.compiler }} strategy: fail-fast: false matrix: os: [ubuntu-24.04] shortosname: [ubu-24] compiler: [g++-14, g++-13] cxx_std: [c++2b] stdlib: [libstdc++] include: - os: ubuntu-20.04 shortosname: ubu-20 compiler: g++-10 cxx_std: c++20 stdlib: libstdc++ - os: ubuntu-24.04 shortosname: ubu-24 compiler: clang++-18 cxx_std: c++20 stdlib: libstdc++ - os: ubuntu-24.04 shortosname: ubu-24 compiler: clang++-18 cxx_std: c++23 stdlib: libc++-18-dev - os: ubuntu-22.04 shortosname: ubu-22 compiler: clang++-15 cxx_std: c++20 stdlib: libstdc++ - os: ubuntu-22.04 shortosname: ubu-22 compiler: clang++-15 cxx_std: c++20 stdlib: libc++-15-dev - os: ubuntu-20.04 shortosname: ubu-20 compiler: clang++-12 cxx_std: c++20 stdlib: libstdc++ - os: macos-14 shortosname: mac-14 compiler: clang++ cxx_std: c++2b stdlib: default - os: macos-13 shortosname: mac-13 compiler: clang++ cxx_std: c++2b stdlib: default - os: macos-13 shortosname: mac-13 compiler: clang++-15 cxx_std: c++2b stdlib: default - os: windows-2022 shortosname: win-22 compiler: cl.exe cxx_std: c++latest stdlib: default - os: windows-2022 shortosname: win-22 compiler: cl.exe cxx_std: c++20 stdlib: default steps: - name: Checkout repo uses: actions/checkout@v4 - name: Prepare compilers if: matrix.os == 'macos-13' run: | sudo xcode-select --switch /Applications/Xcode_14.3.1.app sudo ln -s "$(brew --prefix llvm@15)/bin/clang" /usr/local/bin/clang++-15 - name: Run regression tests - Linux and macOS version if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos') run: | cd regression-tests bash run-tests.sh -c ${{ matrix.compiler }} -s ${{ matrix.cxx_std }} -d ${{ matrix.stdlib }} -l ${{ matrix.os }} - name: Run regression tests - Windows version if: startsWith(matrix.os, 'windows') run: | "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && ^ git config --local core.autocrlf false && ^ cd regression-tests && ^ bash run-tests.sh -c ${{ matrix.compiler }} -s ${{ matrix.cxx_std }} -d ${{ matrix.stdlib }} -l ${{ matrix.os }} shell: cmd - name: Upload patch if: success() || failure() uses: actions/upload-artifact@v4 with: name: ${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.cxx_std }}-${{ matrix.stdlib }}.patch path: regression-tests/${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.cxx_std }}-${{ matrix.stdlib }}.patch if-no-files-found: ignore aggregate-results: needs: regression-tests if: success() || failure() runs-on: ubuntu-latest steps: - name: Download all patches uses: actions/download-artifact@v4 with: path: downloaded-results - name: Prepare result files id: prepare_files run: | mkdir aggregated-results echo "Flattening file hierarchy" find . -type f -wholename "./downloaded-results*" -exec mv {} aggregated-results \; patch_count=$(ls aggregated-results 2>/dev/null | wc -l) echo "patch_count=${patch_count}" >> $GITHUB_OUTPUT - name: Upload aggregated results if: steps.prepare_files.outputs.patch_count != '0' uses: actions/upload-artifact@v4 with: name: aggregated-results path: aggregated-results if-no-files-found: ignore