Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[Bug]: Coverage report fails silently when PR branch is behind develop

Offen Anfängerfreundlich
#15,635 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
88/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
git, github-actions, shell
Bereich
ci-cd, devops

Rechercherichtung

Beginne mit .github/workflows/run_tests_coverage_pr.yml, insbesondere mit dem Schritt „Get list of changed directories“, und vergleiche ihn mit .github/workflows/lint_changed_files.yml und .github/workflows/run_affected_tests.yml. Reproduziere den Workflow mit einem Pull-Request-Branch, der hinter develop zurückliegt, und überprüfe anschließend, dass geänderte Verzeichnisse erkannt werden und der Coverage-Kommentar eine Tabelle statt der Fallback-Nachricht enthält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Bug CI
Description

In .github/workflows/run_tests_coverage_pr.yml, the workflow fails to detect changed packages whenever a pull request branch is behind develop. As a result, the PR coverage report comments:

Coverage Report

No coverage information available.

even though the tests run, succeed, and all other CI checks are green.

What Happens:

  1. Shallow Fetch of Base Branch: In .github/workflows/run_tests_coverage_pr.yml (lines 124–127), the step Get list of changed directories executes a shallow fetch (--depth=1).
  2. Divergent History with No Merge Base: Because --depth=1 only fetches the single latest commit on develop, if develop has moved forward since the feature branch was created, git cannot find a common ancestor with HEAD.
  3. Silent Failure via continue-on-error: Because there is no merge base in the shallow history, git diff origin/${{ github.base_ref }}...HEAD fails. Because the step specifies continue-on-error: true, the error does not fail the job. Instead, files and directories evaluate to an empty string "".
  4. Coverage Script Exits Early: The downstream script .github/workflows/scripts/run_tests_coverage/run receives an empty directory list and exits with code 0.
  5. Bot Posts Default Fallback: Because the $TABLE is empty, the stdlib-bot publishes the fallback "No coverage information available." comment instead of the coverage table.

Comparison with Other Workflows:
Other workflows in the repository (such as .github/workflows/lint_changed_files.yml and .github/workflows/run_affected_tests.yml) avoid this issue by computing the common ancestor commit using git merge-base. Because actions/checkout already fetches history (fetch-depth: 1000), the git merge-base calculation works reliably even if the branch is behind develop.

Proposed Fix:
Update the Get list of changed directories step in .github/workflows/run_tests_coverage_pr.yml to use git merge-base, matching the standard used in the linting workflow:

- git fetch origin ${{ github.base_ref }} --depth=1
- files=$(git diff --diff-filter=AM --name-only origin/${{ github.base_ref }}...HEAD)
+ ancestor_commit=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
+ files=$(git diff --diff-filter=AM --name-only $ancestor_commit ${{ github.event.pull_request.head.sha }})
  directories=$(for file in $files; do dirname $file; done | sort -u | tr '\n' ' ' | sed 's/ $//')
  echo "directories=${directories}" >> $GITHUB_OUTPUT
Related Issues

None.

Questions

If the proposed fix looks good, I am happy to open a PR to update the workflow file!

Demo

This bug can be observed in PR #15633.

  • On the initial commit, the feature branch was behind develop, and the coverage action silently failed with the fallback message.
  • Once develop was merged into the PR branch (syncing the history), the coverage table generated successfully, confirming that the missing merge-base was the root cause.
Reproduction
  1. Open a Pull Request where the feature branch is behind develop.
  2. Wait for the run_tests_coverage_pr.yml GitHub Actions workflow to execute.
  3. Observe the Get list of changed directories step silently failing to find changed files.
  4. Observe the stdlib-bot commenting the fallback text: "No coverage information available."
Expected Results

The workflow should correctly identify the changed directories using the merge base (identical to how .github/workflows/lint_changed_files.yml operates) and generate a valid coverage table for the PR.

Actual Results

The workflow silently fails to calculate the git diff due to the shallow fetch, resulting in the bot commenting a useless fallback message on the PR.

Version

develop (Latest)

Environments

N/A

Browser Version

No response

Node.js / npm Version

No response

Platform

Ubuntu (GitHub Actions Runners)

Checklist
  • Read and understood the Code of Conduct.
  • Searched for existing issues and pull requests.
Vorherrschende Sprache
JavaScript
Sterne
6k
Forks
1.3k
Ø Merge
1 T. 10 Std.
Gemergte PRs (30 T.)
575

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus stdlib-js/stdlib

Alle Issues in stdlib-js/stdlib

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.