Skip to content

Commit 065600a

Browse files
committed
improve tests
1 parent 987c2bc commit 065600a

File tree

4 files changed

+55
-8
lines changed

4 files changed

+55
-8
lines changed

src/ghstack/github_fake.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env python3
22

3+
import dataclasses
34
import os.path
45
import re
56
from dataclasses import dataclass
@@ -271,6 +272,8 @@ class PullRequest(Node):
271272
# state: PullRequestState
272273
title: str
273274
url: str
275+
reviewers: List[str] = dataclasses.field(default_factory=list)
276+
labels: List[str] = dataclasses.field(default_factory=list)
274277

275278
def repository(self, info: GraphQLResolveInfo) -> Repository:
276279
return github_state(info).repositories[self._repository]
@@ -476,10 +479,20 @@ def rest(self, method: str, path: str, **kwargs: Any) -> Any:
476479
if m := re.match(
477480
r"^repos/([^/]+)/([^/]+)/pulls/([^/]+)/requested_reviewers", path
478481
):
479-
# Handle adding reviewers - just return success for testing
482+
# Handle adding reviewers
483+
state = self.state
484+
repo = state.repository(m.group(1), m.group(2))
485+
pr = state.pull_request(repo, GitHubNumber(int(m.group(3))))
486+
reviewers = kwargs.get("reviewers", [])
487+
pr.reviewers.extend(reviewers)
480488
return {}
481489
if m := re.match(r"^repos/([^/]+)/([^/]+)/issues/([^/]+)/labels", path):
482-
# Handle adding labels - just return success for testing
490+
# Handle adding labels
491+
state = self.state
492+
repo = state.repository(m.group(1), m.group(2))
493+
pr = state.pull_request(repo, GitHubNumber(int(m.group(3))))
494+
labels = kwargs.get("labels", [])
495+
pr.labels.extend(labels)
483496
return {}
484497
elif method == "patch":
485498
if m := re.match(r"^repos/([^/]+)/([^/]+)(?:/pulls/([^/]+))?$", path):

src/ghstack/test_prelude.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
"get_sh",
5252
"get_upstream_sh",
5353
"get_github",
54+
"get_pr_reviewers",
55+
"get_pr_labels",
5456
"tick",
5557
"captured_output",
5658
]
@@ -390,6 +392,26 @@ def is_direct() -> bool:
390392
return CTX.direct
391393

392394

395+
def get_github() -> ghstack.github_fake.FakeGitHubEndpoint:
396+
return CTX.github
397+
398+
399+
def get_pr_reviewers(pr_number: int) -> List[str]:
400+
"""Get the reviewers for a PR number."""
401+
github = get_github()
402+
repo = github.state.repository("pytorch", "pytorch")
403+
pr = github.state.pull_request(repo, ghstack.github_fake.GitHubNumber(pr_number))
404+
return pr.reviewers
405+
406+
407+
def get_pr_labels(pr_number: int) -> List[str]:
408+
"""Get the labels for a PR number."""
409+
github = get_github()
410+
repo = github.state.repository("pytorch", "pytorch")
411+
pr = github.state.pull_request(repo, ghstack.github_fake.GitHubNumber(pr_number))
412+
return pr.labels
413+
414+
393415
def assert_eq(a: Any, b: Any) -> None:
394416
assert a == b, f"{a} != {b}"
395417

@@ -423,9 +445,5 @@ def get_upstream_sh() -> ghstack.shell.Shell:
423445
return CTX.upstream_sh
424446

425447

426-
def get_github() -> ghstack.github.GitHubEndpoint:
427-
return CTX.github
428-
429-
430448
def tick() -> None:
431449
CTX.sh.test_tick()

test/submit/cli_reviewer_and_label.py.test

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,19 @@ init_test()
66
commit("A")
77
(A,) = gh_submit("Initial commit", reviewer="reviewer1", label="bug")
88

9+
# Verify first PR has correct reviewers and labels
10+
assert_eq(get_pr_reviewers(500), ["reviewer1"])
11+
assert_eq(get_pr_labels(500), ["bug"])
12+
913
# Create second commit with different reviewers/labels
1014
commit("B")
11-
(A2, B) = gh_submit("Add B", reviewer="reviewer2,reviewer3", label="enhancement,priority-high")
15+
(A2, B) = gh_submit(
16+
"Add B", reviewer="reviewer2,reviewer3", label="enhancement,priority-high"
17+
)
18+
19+
# Verify second PR has correct reviewers and labels
20+
assert_eq(get_pr_reviewers(501), ["reviewer2", "reviewer3"])
21+
assert_eq(get_pr_labels(501), ["enhancement", "priority-high"])
1222

1323
if is_direct():
1424
assert_github_state(

test/submit/reviewer_and_label.py.test

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ from ghstack.test_prelude import *
33
init_test()
44

55
commit("A")
6-
(A,) = gh_submit("Initial commit", reviewer="reviewer1,reviewer2", label="bug,enhancement")
6+
(A,) = gh_submit(
7+
"Initial commit", reviewer="reviewer1,reviewer2", label="bug,enhancement"
8+
)
9+
10+
# Verify reviewers and labels were added
11+
assert_eq(get_pr_reviewers(500), ["reviewer1", "reviewer2"])
12+
assert_eq(get_pr_labels(500), ["bug", "enhancement"])
713

814
if is_direct():
915
assert_github_state(

0 commit comments

Comments
 (0)