From 5a656e5450fd48a2343d1137d9d517f31a221d14 Mon Sep 17 00:00:00 2001 From: Kevin Blackburn-Matzen Date: Sat, 18 Jul 2026 17:01:18 -0700 Subject: [PATCH] Surface test counts in CI; bump Node 20 actions; ignore __pycache__ ctest reports pass/fail for the binary as a whole, and --output-on-failure hides Catch2's summary on success, so a green build recorded nothing about how many cases actually ran. A case that starts skipping stays present in --list-tests (so the #65 guard misses it) and needs no fixture (so the #63 guard misses it too), yet exercises nothing. That is not hypothetical: #70 was a completely broken FFV1 path hidden behind exactly this, for however long it had been there. Every codec these tests need is installed in CI, so a skip there is a real gap rather than graceful degradation, and the check fails the build. It uses the default console reporter deliberately -- --reporter compact omits the skip count entirely, so the grep would never fire. Verified both directions against real output: the line from a run with skips matches, the current clean run does not. Also bumps actions/checkout@v4 -> v5 and actions/setup-python@v5 -> v6 across all three workflows. Both target Node 20, which GitHub is currently force-running on Node 24 behind a shim it calls temporary; when that goes they break, for reasons unrelated to any change here. And adds __pycache__/ to .gitignore, which has been dirtying git status since the Python bindings landed. Fixes #66, fixes #68 Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 22 ++++++++++++++++++++-- .github/workflows/release.yml | 4 ++-- .github/workflows/tla.yml | 2 +- .gitignore | 4 ++++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 432c8b4..a17a707 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: name: ${{ matrix.name }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Install dependencies (Linux) if: runner.os == 'Linux' @@ -50,7 +50,7 @@ jobs: echo "CMAKE_PREFIX_PATH=$(brew --prefix ${{ matrix.opencv }})" >> "$GITHUB_ENV" - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.12' @@ -130,6 +130,24 @@ jobs: - name: Test (C++) run: ctest --test-dir build --output-on-failure --no-tests=error + # ctest reports pass/fail for the binary as a whole, and + # --output-on-failure hides Catch2's summary on success -- so a green + # build records nothing about how many cases actually ran. A case that + # starts skipping stays present in --list-tests (so #65 does not catch + # it) and needs no fixture (so #63 does not either), yet exercises + # nothing. Every codec these tests need is installed above, so on CI a + # skip is a real gap rather than graceful degradation. See #66. + - name: Report and check test counts + run: | + set -o pipefail + # Default console reporter, not --reporter compact: compact omits the + # skip count entirely, so the check below would never see one. + build/framewright_tests | tail -5 | tee catch2.log + if grep -qiE "[1-9][0-9]* skipped" catch2.log; then + echo "::error::test cases were skipped; CI should run the whole suite" + exit 1 + fi + - name: Test (Python) run: | export PYTHONPATH="$PWD/build:$PWD/python" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ce355dc..91e4942 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,9 +9,9 @@ jobs: runs-on: ubuntu-24.04 name: Build source distribution steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: "3.12" diff --git a/.github/workflows/tla.yml b/.github/workflows/tla.yml index 43e61a9..51967d8 100644 --- a/.github/workflows/tla.yml +++ b/.github/workflows/tla.yml @@ -23,7 +23,7 @@ jobs: model-check: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-java@v4 with: diff --git a/.gitignore b/.gitignore index 82c1290..4bd8f8f 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,7 @@ _deps/ # macOS .DS_Store dist/ + +# Python +__pycache__/ +*.py[cod]