Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở Phù hợp với người mới
#15,635 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
88/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
git, github-actions, shell
Lĩnh vực
ci-cd, devops

Hướng nghiên cứu

Bắt đầu với .github/workflows/run_tests_coverage_pr.yml, đặc biệt là bước “Get list of changed directories”, và so sánh nó với .github/workflows/lint_changed_files.yml và .github/workflows/run_affected_tests.yml. Tái hiện workflow với một nhánh pull request đứng sau develop, sau đó xác minh rằng các thư mục đã thay đổi được phát hiện và comment coverage chứa một bảng thay vì thông báo fallback.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.
Ngôn ngữ chính
JavaScript
Star
6k
Fork
1.3k
Merge trung bình
1 ngày 10 giờ
Pull request đã merge (30 ngày)
575

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của stdlib-js/stdlib

Tất cả issue của stdlib-js/stdlib

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.