From 8d6379e14d29928660c4ba802d8e85393440b329 Mon Sep 17 00:00:00 2001 From: James Kessler Date: Mon, 27 Jul 2026 11:50:13 -0700 Subject: [PATCH 1/2] Fix macOS install for Homebrew 6.0.0 tap trust requirement (#265) * Fix macOS install for Homebrew 6.0.0 tap trust requirement Homebrew 6.0.0 refuses to load formulae from untrusted third-party taps, so `brew tap coverallsapp/coveralls && brew install coveralls` now fails with "Refusing to load formula ... from untrusted tap". Installing via the fully-qualified formula name auto-taps the repo and trusts only this formula, non-interactively. It is also backwards compatible with Homebrew < 6, unlike `brew trust`, which does not exist on older versions. Fixes #264 Co-Authored-By: Claude Fable 5 * CI: re-run against current runner images (Homebrew 6) --------- Co-authored-by: Claude Fable 5 --- action.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/action.yml b/action.yml index 329d1a0d..cb741980 100644 --- a/action.yml +++ b/action.yml @@ -102,8 +102,10 @@ runs: # Enable debugging if 'debug' is true [ "${{ inputs.debug }}" == "true" ] && set -x - # Try to install coverage-reporter via Homebrew - if ! brew tap coverallsapp/coveralls --quiet || ! brew install coveralls --quiet; then + # Try to install coverage-reporter via Homebrew. + # The fully-qualified formula name auto-taps the repo and trusts only + # this formula, as required by tap trust in Homebrew 6.0.0+. + if ! brew install coverallsapp/coveralls/coveralls --quiet; then echo "Failed to install coveralls via Homebrew (macOS)." [ "${{ inputs.fail-on-error }}" == "false" ] && exit 0 exit 1 From af22fc707a71b46b799cfed7ec1581a21bc22094 Mon Sep 17 00:00:00 2001 From: James Kessler Date: Mon, 27 Jul 2026 14:14:56 -0700 Subject: [PATCH 2/2] Add cross-platform smoke test for the published action (#267) * Add manual smoke test: published @v2 action on macOS runners Exercises the full end-user chain from issue #264: the published v2 tag -> brew install of the coverallsapp/coveralls formula under Homebrew 6 tap trust -> coverage-reporter binary -> report upload, with fail-on-error and no error masking. Co-Authored-By: Claude Fable 5 * Trigger smoke test on push to this branch * Generalize smoke test to all supported platforms Extend the macOS-only smoke test to ubuntu-latest, windows-latest, macos-latest and macos-15, covering all three install paths of the published action (Homebrew on macOS, GitHub-release binary download on Linux and Windows). Co-Authored-By: Claude Fable 5 * Smoke test: drop temporary push trigger, document manual runs Co-Authored-By: Claude Fable 5 --------- Co-authored-by: Claude Fable 5 --- .github/workflows/smoke-test.yml | 58 ++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/smoke-test.yml diff --git a/.github/workflows/smoke-test.yml b/.github/workflows/smoke-test.yml new file mode 100644 index 00000000..903db92d --- /dev/null +++ b/.github/workflows/smoke-test.yml @@ -0,0 +1,58 @@ +name: Smoke Test (published action) + +# Verifies the full end-user chain of the *published* v2 tag on every +# supported platform: action resolution -> reporter install (Homebrew on +# macOS, GitHub-release download on Linux/Windows) -> report upload. +# Runs automatically after each release (once the v2 tag has been moved +# by the Update Major Version Tag workflow). +# +# Run it manually after any change worth sanity-checking against the +# published action -- e.g. a Homebrew major version, a runner-image +# update, or an action update -- either way: +# - GitHub UI: Actions tab -> "Smoke Test (published action)" -> +# "Run workflow" -> keep branch "main" -> green "Run workflow" button +# - CLI: gh workflow run smoke-test.yml --repo coverallsapp/github-action + +on: + workflow_dispatch: + workflow_run: + workflows: ["Update Major Version Tag"] + types: [completed] + +jobs: + smoke: + if: github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, macos-15, windows-latest] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Create minimal lcov coverage fixture + shell: bash + run: | + mkdir -p coverage + { + echo "SF:action.yml" + echo "DA:1,1" + echo "DA:2,1" + echo "DA:3,0" + echo "end_of_record" + } > coverage/lcov.info + + - name: Run published action as an end user would + uses: coverallsapp/github-action@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + file: coverage/lcov.info + fail-on-error: true + debug: true + + - name: Verify installed coverage-reporter binary + shell: bash + run: | + which coveralls + coveralls --version