[Bug]: Coverage report fails silently when PR branch is behind develop
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
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
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:
- Shallow Fetch of Base Branch: In
.github/workflows/run_tests_coverage_pr.yml(lines 124–127), the stepGet list of changed directoriesexecutes a shallow fetch (--depth=1). - Divergent History with No Merge Base: Because
--depth=1only fetches the single latest commit ondevelop, ifdevelophas moved forward since the feature branch was created, git cannot find a common ancestor withHEAD. - Silent Failure via
continue-on-error: Because there is no merge base in the shallow history,git diff origin/${{ github.base_ref }}...HEADfails. Because the step specifiescontinue-on-error: true, the error does not fail the job. Instead,filesanddirectoriesevaluate to an empty string"". - Coverage Script Exits Early: The downstream script
.github/workflows/scripts/run_tests_coverage/runreceives an empty directory list and exits with code0. - Bot Posts Default Fallback: Because the
$TABLEis empty, thestdlib-botpublishes 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
developwas merged into the PR branch (syncing the history), the coverage table generated successfully, confirming that the missing merge-base was the root cause.
Reproduction
- Open a Pull Request where the feature branch is behind
develop. - Wait for the
run_tests_coverage_pr.ymlGitHub Actions workflow to execute. - Observe the
Get list of changed directoriesstep silently failing to find changed files. - Observe the
stdlib-botcommenting 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
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus stdlib-js/stdlib
-
`@stdlib/string/base/percent-encode` produces malformed encoding and silently drops charactersOffenBug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
stdlib-js/stdlib#15595 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug]: kumaraswamy/kurtosis returns non-excess kurtosis (missing −3)Evtl. vergeben @Planeshifter hat das vor 2 Tagen übernommen. OffenBug Statistics
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
stdlib-js/stdlib#15461 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug]: rayleigh/mgf returns wrong values due to misplaced parenthesisEvtl. vergeben @anandkaranubc hat das vor 5 Tagen übernommen. OffenBug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
stdlib-js/stdlib#15456 · 6 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
stdlib-js/stdlib#15193 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Good First Issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
stdlib-js/stdlib#14759 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in stdlib-js/stdlib
Ähnliche Issues
-
Add google analyticsOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
NCAR/music-box-interactive#628 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
remotion-dev/remotion#11847 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
phoenixframework/phoenix_live_view#4456 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
AllTheMods/ATM-10#4436 ·
Maintainer antworten meist innerhalb von 5 Tagen