Repository navigation
[Bug]: Coverage report fails silently when PR branch is behind develop #15635
Description
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_OUTPUTRelated 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.
Activity
[-]BUG[CI]: Coverage report fails silently when PR branch is behind develop[/-][+][Bug(CI)]: Coverage report fails silently when PR branch is behind develop[/+][-][Bug(CI)]: Coverage report fails silently when PR branch is behind develop[/-][+][Bug]: Coverage report fails silently when PR branch is behind develop[/+]kgryte commentedon Sep 30, 2026
@AryanSharma48 Thanks for reporting. Yes, feel free to open a PR.
build: use merge-base to find changed directories in PR coverage work…