[Bug(CI)]: Coverage report fails silently when PR branch is behind develop
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
Direzione di ricerca
Inizia da .github/workflows/run_tests_coverage_pr.yml, in particolare dal passaggio “Get list of changed directories”, e confrontalo con .github/workflows/lint_changed_files.yml e .github/workflows/run_affected_tests.yml. Riproduci il workflow con un branch di pull request indietro rispetto a develop, quindi verifica che le directory modificate vengano rilevate e che il commento di coverage contenga una tabella invece del messaggio di fallback.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- JavaScript
- Stelle
- 6k
- Fork
- 1.3k
- Merge medio
- 1g 8h
- PR unite (30g)
- 580
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di stdlib-js/stdlib
-
`@stdlib/string/base/percent-encode` produces malformed encoding and silently drops charactersApertaBug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
stdlib-js/stdlib#15595 · 6 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Bug Statistics
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stdlib-js/stdlib#15461 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: rayleigh/mgf returns wrong values due to misplaced parenthesisForse già presa @anandkaranubc l’ha presa 4 giorni fa. ApertaBug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stdlib-js/stdlib#15456 · 6 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
stdlib-js/stdlib#15193 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Fix JavaScript lint errorsApertaGood First Issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
stdlib-js/stdlib#14759 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di stdlib-js/stdlib
Issue simili
-
automation models
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
needs:triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement status: needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
mastra-ai/mastra#25508 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
[aw] Upgrade availableApertaagentic-workflows
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
githubnext/gh-aw-cao#15017 ·
I maintainer di solito rispondono entro 1 giorno