chore(ci): label FTC-closed PRs as needs-issue (#7249)

This commit is contained in:
Vidit Ostwal
2026-09-09 00:32:53 +05:30
committed by GitHub
parent 79befd0ce5
commit a68b5e903c
4 changed files with 25 additions and 3 deletions

View File

@@ -104,7 +104,7 @@ chore(deps): bump pydantic to 2.11
- PRs over 500 lines are labeled `size/XL` automatically
- Title must follow the same conventional commit format
- Link related issues where applicable (`#123`, `Fixes #123`, or the issue URL)
- First-time contributors must open or pick an existing **open** issue first, then mention it in the PR title or body (for example `#123`). PRs without a linked open issue are closed automatically.
- First-time contributors must open or pick an existing **open** issue first, then mention it in the PR title or body (for example `#123`). PRs without a linked open issue are closed automatically and labeled `needs-issue`.
## Testing

View File

@@ -4,7 +4,8 @@ Fixes #
<!--
First-time contributors must mention an existing open issue in this repo
(for example #123). PRs without a linked open issue are closed automatically.
(for example #123). PRs without a linked open issue are closed automatically
and labeled needs-issue.
-->
## Summary

View File

@@ -6,7 +6,7 @@ on:
permissions:
pull-requests: write
issues: read
issues: write
concurrency:
group: ftc-require-issue-${{ github.event.pull_request.number }}
@@ -114,6 +114,19 @@ jobs:
],
check=True,
)
subprocess.run(
[
"gh",
"pr",
"edit",
pr_number,
"--repo",
repo,
"--add-label",
"needs-issue",
],
check=True,
)
subprocess.run(
["gh", "pr", "close", pr_number, "--repo", repo],
check=True,

View File

@@ -86,6 +86,9 @@ def test_open_issue_mention_blocks_close(body: str) -> None:
)
assert not any(call[:3] == ["gh", "pr", "close"] for call in calls)
assert not any(
call[:3] == ["gh", "pr", "edit"] and "--add-label" in call for call in calls
)
assert any(call[:2] == ["gh", "api"] and call[2].endswith("/issues/123") for call in calls)
@@ -98,4 +101,9 @@ def test_foreign_repo_reference_closes_pr() -> None:
)
assert any(call[:3] == ["gh", "pr", "close"] for call in calls)
assert any(
call[:3] == ["gh", "pr", "edit"] and call[call.index("--add-label") + 1] == "needs-issue"
for call in calls
if "--add-label" in call
)
assert not any(call[:2] == ["gh", "api"] for call in calls)