Skip to content
This repository was archived by the owner on Mar 14, 2023. It is now read-only.

Commit f78cf66

Browse files
authored
Merge pull request #204 from rust-lang/infra-ci
Add a subset of the infra team as the reviewer for CI
2 parents 13a2364 + 6c11377 commit f78cf66

File tree

6 files changed

+69
-43
lines changed

6 files changed

+69
-43
lines changed

highfive/configs/rust-lang/cargo.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"all": ["@alexcrichton", "@ehuss", "@dwijnand", "@nrc", "@Eh2406"]
44
},
55
"dirs": {
6-
"doc": ["doc"]
6+
"src/doc": ["doc"]
77
},
88
"contributing": "https://github.com/rust-lang/cargo/blob/master/CONTRIBUTING.md",
99
"new_pr_labels": ["S-waiting-on-review"]

highfive/configs/rust-lang/rust.json

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,44 @@
44
"compiler": ["@cramertj", "@pnkfelix", "@eddyb", "@petrochenkov", "@estebank", "@michaelwoerister", "@varkor", "@matthewjasper", "@davidtwco", "@zackmdavis", "@oli-obk"],
55
"syntax": ["@pnkfelix", "@petrochenkov", "@michaelwoerister", "@eddyb"],
66
"libs": ["@KodrAus", "@alexcrichton", "@sfackler", "@dtolnay", "@JoshTriplett", "@rkruppe", "@bluss", "@kimundi", "@withoutboats", "@cramertj", "@shepmaster", "@Mark-Simulacrum", "@TimNN", "@kennytm", "@aidanhs"],
7+
"infra-ci": ["@alexcrichton", "@Mark-Simulacrum", "@kennytm", "@pietroalbini"],
78
"rustdoc": ["@QuietMisdreavus", "@steveklabnik", "@GuillaumeGomez", "@ollie27"]
89
},
910
"dirs": {
10-
"doc": ["doc"],
11-
"liballoc": ["libs"],
12-
"libarena": ["libs"],
13-
"libbacktrace": [],
14-
"libcollections": ["libs", "@Gankro"],
15-
"libcore": ["libs"],
16-
"libcoretest": ["libs"],
17-
"libflate": ["libs"],
18-
"libfmt_macros": ["libs"],
19-
"libgetopts": ["libs"],
20-
"libgraphviz": ["@pnkfelix"],
21-
"liblibc": ["libs"],
22-
"liblog": ["libs"],
23-
"librand": ["libs"],
24-
"librbml": ["libs", "@erickt"],
25-
"librustc": ["compiler"],
26-
"librustdoc": ["rustdoc"],
27-
"libserialize": ["libs", "@erickt"],
28-
"libstd": ["libs"],
29-
"libsyntax": ["syntax"],
30-
"libterm": ["libs"],
31-
"libtest": ["libs"],
32-
"libunicode": ["libs", "@SimonSapin"],
33-
"rustbook": ["doc"]
11+
"src/doc": ["doc"],
12+
"src/liballoc": ["libs"],
13+
"src/libarena": ["libs"],
14+
"src/libbacktrace": [],
15+
"src/libcollections": ["libs", "@Gankro"],
16+
"src/libcore": ["libs"],
17+
"src/libcoretest": ["libs"],
18+
"src/libflate": ["libs"],
19+
"src/libfmt_macros": ["libs"],
20+
"src/libgetopts": ["libs"],
21+
"src/libgraphviz": ["@pnkfelix"],
22+
"src/liblibc": ["libs"],
23+
"src/liblog": ["libs"],
24+
"src/librand": ["libs"],
25+
"src/librbml": ["libs", "@erickt"],
26+
"src/librustc": ["compiler"],
27+
"src/librustdoc": ["rustdoc"],
28+
"src/libserialize": ["libs", "@erickt"],
29+
"src/libstd": ["libs"],
30+
"src/libsyntax": ["syntax"],
31+
"src/libterm": ["libs"],
32+
"src/libtest": ["libs"],
33+
"src/libunicode": ["libs", "@SimonSapin"],
34+
"src/rustbook": ["doc"],
35+
"src/ci": ["infra-ci"],
36+
".travis.yml": ["infra-ci"],
37+
"appveyor.yml": ["infra-ci"]
3438
},
3539
"mentions": {
36-
"librustdoc/html/static": {
40+
"src/librustdoc/html/static": {
3741
"message": "Some changes occurred in HTML/CSS.",
3842
"reviewers": ["@GuillaumeGomez"]
3943
},
40-
"src/doc": {
44+
"src/src/doc": {
4145
"message": "Some changes occurred in HTML/CSS.",
4246
"reviewers": ["@GuillaumeGomez"]
4347
},

highfive/newpr.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -259,30 +259,24 @@ def choose_reviewer(self, repo, owner, diff, exclude):
259259
most_changed = None
260260
to_mention = []
261261
# If there's directories with specially assigned groups/users
262-
# inspect the diff to find the directory (under src) with the most
263-
# additions
262+
# inspect the diff to find the directory with the most additions
264263
if dirs:
265264
counts = {}
266265
cur_dir = None
267266
for line in diff.split('\n'):
268267
if line.startswith("diff --git "):
269268
# update cur_dir
270269
cur_dir = None
271-
start = line.find(" b/src/") + len(" b/src/")
272-
if start == -1:
270+
parts = line[line.find(" b/") + len(" b/"):].split("/")
271+
if not parts:
273272
continue
274-
end = line.find("/", start)
275-
if end == -1:
276-
continue
277-
full_end = line.rfind("/", start)
278-
279-
cur_dir = line[start:end]
280-
full_dir = line[start:full_end] if full_end != -1 else ""
273+
cur_dir = "/".join(parts[:2])
274+
full_dir = "/".join(parts)
281275

282276
# A few heuristics to get better reviewers
283-
if cur_dir.startswith('librustc'):
284-
cur_dir = 'librustc'
285-
if cur_dir == 'test':
277+
if cur_dir.startswith('src/librustc'):
278+
cur_dir = 'src/librustc'
279+
if cur_dir == 'src/test':
286280
cur_dir = None
287281
if len(full_dir) > 0:
288282
for entry in mentions:

highfive/tests/fakes.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,15 @@ def get_repo_configs():
2424
},
2525
'individuals_dirs': {
2626
"groups": { "all": ["@pnkfelix", "@nrc"] },
27-
"dirs": { "librustc": ["@aturon"] },
27+
"dirs": { "src/librustc": ["@aturon"] },
2828
},
2929
'individuals_dirs_2': {
3030
"groups": { "all": ["@pnkfelix", "@nrc"] },
31-
"dirs": { "foobazdir": ["@aturon"] },
31+
"dirs": { "src/foobazdir": ["@aturon"] },
32+
},
33+
'individual_files': {
34+
"groups": { "all": ["@pnkfelix", "@nrc"] },
35+
"dirs": { ".travis.yml": ["@aturon"] },
3236
},
3337
'circular_groups': {
3438
"groups": {

highfive/tests/fakes/travis-yml.diff

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/.travis.yml b/.travis.yml
2+
index 7f99678499..c4efa88460 100644
3+
--- a/.travis.yml
4+
+++ b/.travis.yml
5+
@@ -1,6 +1,6 @@
6+
language: shell
7+
sudo: required
8+
-dist: trusty
9+
+dist: xenial
10+
services:
11+
- docker
12+
addons:

highfive/tests/test_newpr.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,6 +1099,7 @@ def make_fakes(cls):
10991099
cls.fakes = {
11001100
'diff': {
11011101
'normal': load_fake('normal.diff'),
1102+
'travis-yml': load_fake('travis-yml.diff'),
11021103
},
11031104
'config': fakes.get_repo_configs(),
11041105
'global_': fakes.get_global_configs(),
@@ -1238,6 +1239,17 @@ def test_with_dirs_no_intersection(self):
12381239
assert set(["pnkfelix", "nrc"]) == chosen_reviewers
12391240
assert set([()]) == mentions
12401241

1242+
def test_with_files(self):
1243+
"""Test choosing a reviewer when a file os changed."""
1244+
self.handler = HighfiveHandlerMock(
1245+
Payload({}), repo_config=self.fakes['config']['individual_files']
1246+
).handler
1247+
(chosen_reviewers, mentions) = self.choose_reviewers(
1248+
self.fakes['diff']['travis-yml'], "nikomatsakis"
1249+
)
1250+
assert set(["pnkfelix", "nrc", "aturon"]) == chosen_reviewers
1251+
assert set([()]) == mentions
1252+
12411253
class TestRun(TestNewPR):
12421254
@pytest.fixture(autouse=True)
12431255
def make_mocks(cls, patcherize):

0 commit comments

Comments
 (0)