diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index 7a29ce9..00c5a25 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -214,7 +214,11 @@ jobs: set -euo pipefail BLAISE="${{ steps.pre.outputs.bin }}" pasbuild test-compile -m blaise-compiler --compiler "$BLAISE" - compiler/target/TestRunner + # Point the CLI-contract and internal-assembler suites at the + # bootstrapped -pre binary. Without this they fall back to the + # /tmp/fp_blaise* fixpoint binaries (which only exist after a local + # fixpoint.sh run) and silently Ignore ~24 tests in CI. + BLAISE_QBE_COMPILER="$BLAISE" compiler/target/TestRunner # -------------------------------------------------------------------- # 9. Save the carry-forward cache for the next run: the -pre binary, its diff --git a/compiler/src/test/pascal/cp.test.assembler.pas b/compiler/src/test/pascal/cp.test.assembler.pas index 96e0563..930a93e 100644 --- a/compiler/src/test/pascal/cp.test.assembler.pas +++ b/compiler/src/test/pascal/cp.test.assembler.pas @@ -98,6 +98,12 @@ type implementation +{ Print the "tests skipped" note at most once per suite run, so a CI + environment that lacks the QBE compiler binary surfaces the skip loudly + instead of silently reporting green with ~12 ignored tests. } +var + GInternalAsmSkipNoted: Boolean = False; + { ---- TAsmEncodingTests ---- } function TAsmEncodingTests.ContainsBytes(const ABuf, APat: string): Boolean; @@ -553,6 +559,13 @@ end; function TInternalAsmE2ETests.CompilerAvailable: Boolean; begin Result := FileExists(FCompiler) and FileExists(FRTL); + if (not Result) and (not GInternalAsmSkipNoted) then + begin + GInternalAsmSkipNoted := True; + WriteLn(StdErr, 'note: TInternalAsmE2ETests skipped — compiler binary "', + FCompiler, '" or RTL "', FRTL, '" not found ', + '(set BLAISE_QBE_COMPILER to a QBE-backend blaise binary to run them)'); + end; end; function TInternalAsmE2ETests.RunProc(const AExe: string; diff --git a/compiler/src/test/pascal/cp.test.cli.pas b/compiler/src/test/pascal/cp.test.cli.pas index 206d3c0..3166474 100644 --- a/compiler/src/test/pascal/cp.test.cli.pas +++ b/compiler/src/test/pascal/cp.test.cli.pas @@ -77,6 +77,12 @@ type implementation +{ Print the "tests skipped" note at most once per suite run, so a CI + environment that lacks the QBE compiler binary surfaces the skip loudly + instead of silently reporting green with ~12 ignored tests. } +var + GCLISkipNoted: Boolean = False; + { ---- helpers ---- } function TCLIContractTests.ProjectRoot: string; @@ -125,6 +131,13 @@ end; function TCLIContractTests.CompilerAvailable: Boolean; begin Result := FileExists(FCompiler) and FileExists(FRTL); + if (not Result) and (not GCLISkipNoted) then + begin + GCLISkipNoted := True; + WriteLn(StdErr, 'note: TCLIContractTests skipped — compiler binary "', + FCompiler, '" or RTL "', FRTL, '" not found ', + '(set BLAISE_QBE_COMPILER to a QBE-backend blaise binary to run them)'); + end; end; function TCLIContractTests.RunCompiler(const AArgs: array of string;