Skip to content

Commit fe2e68d

Browse files
committed
fix(root): 리뷰 문서 커밋 경로 검증 명확화
1 parent 484f8ec commit fe2e68d

2 files changed

Lines changed: 29 additions & 3 deletions

File tree

.github/scripts/review_publishing.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,13 @@ def pr_review_doc_path(pr_number: int) -> str:
142142
return f"{DOC_ROOT}/PR-{pr_number}.md"
143143

144144

145+
def _pr_number_from_review_doc_path(path: str) -> int | None:
146+
match = re.fullmatch(r"docs/pr-reviews/PR-([1-9][0-9]*)\.md", path.strip())
147+
return int(match.group(1)) if match else None
148+
149+
145150
def is_pr_review_doc_path(path: str) -> bool:
146-
return bool(re.fullmatch(r"docs/pr-reviews/PR-[1-9][0-9]*\.md", path.strip()))
151+
return _pr_number_from_review_doc_path(path) is not None
147152

148153

149154
def parse_right_side_lines(files: Sequence[Mapping[str, Any]]) -> dict[str, set[int]]:
@@ -1021,8 +1026,10 @@ def generated_doc_only_parent_sha(
10211026
or not isinstance(parents[0], Mapping)
10221027
):
10231028
return None
1024-
document_pr_number = int(Path(paths[0]).stem.removeprefix("PR-"))
1025-
if message != _doc_commit_message(document_pr_number):
1029+
document_pr_number = _pr_number_from_review_doc_path(paths[0])
1030+
if document_pr_number is None or message != _doc_commit_message(
1031+
document_pr_number
1032+
):
10261033
return None
10271034
return _string(parents[0].get("sha")) or None
10281035

.github/scripts/test_review_publishing.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,25 @@ def test_rejects_mismatched_pr_number_in_generated_message(self):
682682
)
683683
)
684684

685+
def test_rejects_invalid_review_doc_number_without_raising(self):
686+
github = FakeGitHub(
687+
responses=[
688+
{
689+
"commit": {
690+
"message": "docs(docs): PR-invalid 리뷰 판단 근거 기록"
691+
},
692+
"files": [{"filename": "docs/pr-reviews/PR-invalid.md"}],
693+
"parents": [{"sha": "parent-sha"}],
694+
}
695+
]
696+
)
697+
698+
self.assertIsNone(
699+
rp.generated_doc_only_parent_sha(
700+
"api", "token", "repo", {"head": {"sha": "abc"}}, github
701+
)
702+
)
703+
685704
def test_recognizes_pr_review_document_path(self):
686705
self.assertTrue(rp.is_pr_review_doc_path("docs/pr-reviews/PR-1.md"))
687706
self.assertFalse(rp.is_pr_review_doc_path("docs/pr-reviews/README.md"))

0 commit comments

Comments
 (0)