aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.one>2026-10-16 20:54:00 +0800
committer_ov4 <ov4@ov4.one>2026-10-16 20:54:00 +0800
commit670b0d8a4669d939b09b4990be89173805831215 (patch)
tree0a4ea2f071ed574b62782cb0002ddf6eec2bb5c3 /.github
parentf1f01c0622a9045e26335f5715a42342d0191dcd (diff)
ci(compiler): gate platform packages on reproducible compiler tests
Run all three suites on Linux, macOS and Windows with the push SHA as seed. Retain failure evidence and document the 12 existing failures, pending human review and remaining coverage gaps. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/nightly-build.yml67
1 files changed, 65 insertions, 2 deletions
diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml
index 5a3ec67..72c24fe 100644
--- a/.github/workflows/nightly-build.yml
+++ b/.github/workflows/nightly-build.yml
@@ -60,17 +60,37 @@ jobs:
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential cmake clang-23 llvm-23-dev lld-23 \
- libclang-23-dev liblld-23-dev libpolly-23-dev python3 \
+ libclang-23-dev liblld-23-dev libpolly-23-dev python3 perl \
zlib1g-dev libzstd-dev libncurses-dev libedit-dev pandoc
- name: Build the embedded release package
run: |
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release -DCPSC_RUN_MODE=EMBEDDED \
+ -DBUILD_TESTING=ON -DCPSC_TEST_SEED="$GITHUB_SHA" \
-DCMAKE_C_COMPILER=clang-23 -DCMAKE_CXX_COMPILER=clang++-23 \
-DLLVM_DIR=/usr/lib/llvm-23/lib/cmake/llvm
+ cmake --build build --parallel 4
cmake --build build --target release --parallel 4
+ - name: Test compiler semantics, differential output and diagnostics
+ id: compiler-tests
+ run: ctest --test-dir build --output-on-failure --parallel 2
+
+ - name: Summarize compiler tests
+ if: ${{ !cancelled() && (steps.compiler-tests.outcome == 'success' || steps.compiler-tests.outcome == 'failure') }}
+ run: python3 tests/summarize.py build/test-results
+
+ - name: Retain failed compiler test inputs and logs
+ if: ${{ failure() && steps.compiler-tests.outcome == 'failure' }}
+ uses: actions/upload-artifact@v7.0.2
+ with:
+ name: compiler-tests-${{ runner.os }}-${{ runner.arch }}-${{ github.sha }}
+ path: |
+ build/test-results/
+ build/Testing/Temporary/
+ retention-days: 14
+
- name: Smoke test the packaged compiler
run: |
packages=(build/cpsc-*-Linux-x86_64.tar.xz)
@@ -124,7 +144,7 @@ jobs:
run: |
test "$(uname -m)" = arm64
brew update
- brew install llvm@23 pandoc zlib zstd ncurses python
+ brew install llvm@23 pandoc zlib zstd ncurses python perl
brew upgrade llvm@23
llvm_prefix=$(brew --prefix llvm@23)
test -x "$llvm_prefix/bin/clang++"
@@ -147,14 +167,34 @@ jobs:
ncurses_prefix=$(brew --prefix ncurses)
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release -DCPSC_RUN_MODE=EMBEDDED \
+ -DBUILD_TESTING=ON -DCPSC_TEST_SEED="$GITHUB_SHA" \
-DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=15.0 \
-DCMAKE_OSX_SYSROOT="$(xcrun --show-sdk-path)" \
-DCMAKE_C_COMPILER="$llvm_prefix/bin/clang" \
-DCMAKE_CXX_COMPILER="$llvm_prefix/bin/clang++" \
-DLLVM_DIR="$llvm_prefix/lib/cmake/llvm" \
-DCMAKE_PREFIX_PATH="$llvm_prefix;$zlib_prefix;$zstd_prefix;$ncurses_prefix"
+ cmake --build build --parallel 3
cmake --build build --target release --parallel 3
+ - name: Test compiler semantics, differential output and diagnostics
+ id: compiler-tests
+ run: ctest --test-dir build --output-on-failure --parallel 2
+
+ - name: Summarize compiler tests
+ if: ${{ !cancelled() && (steps.compiler-tests.outcome == 'success' || steps.compiler-tests.outcome == 'failure') }}
+ run: python3 tests/summarize.py build/test-results
+
+ - name: Retain failed compiler test inputs and logs
+ if: ${{ failure() && steps.compiler-tests.outcome == 'failure' }}
+ uses: actions/upload-artifact@v7.0.2
+ with:
+ name: compiler-tests-${{ runner.os }}-${{ runner.arch }}-${{ github.sha }}
+ path: |
+ build/test-results/
+ build/Testing/Temporary/
+ retention-days: 14
+
- name: Smoke test the packaged compiler
run: |
packages=(build/cpsc-*-Darwin-arm64.tar.xz)
@@ -217,6 +257,7 @@ jobs:
install: >-
curl
git
+ perl
mingw-w64-x86_64-cmake
mingw-w64-x86_64-make
mingw-w64-x86_64-clang
@@ -243,10 +284,12 @@ jobs:
run: |
cmake -S . -B build -G "MinGW Makefiles" \
-DCMAKE_BUILD_TYPE=Release -DCPSC_RUN_MODE=EMBEDDED \
+ -DBUILD_TESTING=ON -DCPSC_TEST_SEED="$GITHUB_SHA" \
-DCMAKE_C_COMPILER="$(cygpath -m /mingw64/bin/clang.exe)" \
-DCMAKE_CXX_COMPILER="$(cygpath -m /mingw64/bin/clang++.exe)" \
-DLLVM_DIR="$(cygpath -m /mingw64/lib/cmake/llvm)" \
-DCMAKE_PREFIX_PATH="$(cygpath -m /mingw64)"
+ cmake --build build --parallel 4
cmake --build build --target release --parallel 4
- name: Check Windows runtime dependencies
@@ -269,6 +312,26 @@ jobs:
esac
done <<< "$imports"
+ - name: Test compiler semantics, differential output and diagnostics
+ id: compiler-tests
+ shell: msys2 {0}
+ run: ctest --test-dir build --output-on-failure --parallel 2
+
+ - name: Summarize compiler tests
+ if: ${{ !cancelled() && (steps.compiler-tests.outcome == 'success' || steps.compiler-tests.outcome == 'failure') }}
+ shell: msys2 {0}
+ run: python3 tests/summarize.py build/test-results
+
+ - name: Retain failed compiler test inputs and logs
+ if: ${{ failure() && steps.compiler-tests.outcome == 'failure' }}
+ uses: actions/upload-artifact@v7.0.2
+ with:
+ name: compiler-tests-${{ runner.os }}-${{ runner.arch }}-${{ github.sha }}
+ path: |
+ build/test-results/
+ build/Testing/Temporary/
+ retention-days: 14
+
- name: Smoke test the packaged compiler
shell: pwsh
run: |