@@ -8,15 +8,26 @@ fn test_from_names(
8
8
config : toml:: Value ,
9
9
issue : serde_json:: Value ,
10
10
names : & [ & str ] ,
11
- expected : & [ & str ] ,
11
+ expected : Result < & [ & str ] , FindReviewerError > ,
12
12
) {
13
13
let ( teams, config, issue) = convert_simplified ( teams, config, issue) ;
14
14
let names: Vec < _ > = names. iter ( ) . map ( |n| n. to_string ( ) ) . collect ( ) ;
15
- let candidates = candidate_reviewers_from_names ( & teams, & config, & issue, & names) . unwrap ( ) ;
16
- let mut candidates: Vec < _ > = candidates. into_iter ( ) . collect ( ) ;
17
- candidates. sort ( ) ;
18
- let expected: Vec < _ > = expected. iter ( ) . map ( |x| * x) . collect ( ) ;
19
- assert_eq ! ( candidates, expected) ;
15
+ match (
16
+ candidate_reviewers_from_names ( & teams, & config, & issue, & names) ,
17
+ expected,
18
+ ) {
19
+ ( Ok ( candidates) , Ok ( expected) ) => {
20
+ let mut candidates: Vec < _ > = candidates. into_iter ( ) . collect ( ) ;
21
+ candidates. sort ( ) ;
22
+ let expected: Vec < _ > = expected. iter ( ) . map ( |x| * x) . collect ( ) ;
23
+ assert_eq ! ( candidates, expected) ;
24
+ }
25
+ ( Err ( actual) , Err ( expected) ) => {
26
+ assert_eq ! ( actual, expected)
27
+ }
28
+ ( Ok ( candidates) , Err ( _) ) => panic ! ( "expected Err, got Ok: {candidates:?}" ) ,
29
+ ( Err ( e) , Ok ( _) ) => panic ! ( "expected Ok, got Err: {e}" ) ,
30
+ }
20
31
}
21
32
22
33
/// Convert the simplified input in preparation for `candidate_reviewers_from_names`.
@@ -78,7 +89,15 @@ fn circular_groups() {
78
89
other = [ "compiler" ]
79
90
) ;
80
91
let issue = generic_issue ( "octocat" , "rust-lang/rust" ) ;
81
- test_from_names ( None , config, issue, & [ "compiler" ] , & [ ] ) ;
92
+ test_from_names (
93
+ None ,
94
+ config,
95
+ issue,
96
+ & [ "compiler" ] ,
97
+ Err ( FindReviewerError :: NoReviewer {
98
+ initial : vec ! [ "compiler" . to_string( ) ] ,
99
+ } ) ,
100
+ ) ;
82
101
}
83
102
84
103
#[ test]
@@ -91,7 +110,7 @@ fn nested_groups() {
91
110
c = [ "a" , "b" ]
92
111
) ;
93
112
let issue = generic_issue ( "octocat" , "rust-lang/rust" ) ;
94
- test_from_names ( None , config, issue, & [ "c" ] , & [ "nrc" , "pnkfelix" ] ) ;
113
+ test_from_names ( None , config, issue, & [ "c" ] , Ok ( & [ "nrc" , "pnkfelix" ] ) ) ;
95
114
}
96
115
97
116
#[ test]
@@ -102,7 +121,16 @@ fn candidate_filtered_author_only_candidate() {
102
121
compiler = [ "nikomatsakis" ]
103
122
) ;
104
123
let issue = generic_issue ( "nikomatsakis" , "rust-lang/rust" ) ;
105
- test_from_names ( None , config, issue, & [ "compiler" ] , & [ ] ) ;
124
+ test_from_names (
125
+ None ,
126
+ config,
127
+ issue,
128
+ & [ "compiler" ] ,
129
+ Err ( FindReviewerError :: AllReviewersFiltered {
130
+ initial : vec ! [ "compiler" . to_string( ) ] ,
131
+ filtered : vec ! [ "nikomatsakis" . to_string( ) ] ,
132
+ } ) ,
133
+ ) ;
106
134
}
107
135
108
136
#[ test]
@@ -119,7 +147,7 @@ fn candidate_filtered_author() {
119
147
config,
120
148
issue,
121
149
& [ "compiler" ] ,
122
- & [ "user1" , "user3" , "user4" ] ,
150
+ Ok ( & [ "user1" , "user3" , "user4" ] ) ,
123
151
) ;
124
152
}
125
153
@@ -135,7 +163,7 @@ fn candidate_filtered_assignee() {
135
163
{ "login" : "user1" , "id" : 1 } ,
136
164
{ "login" : "user3" , "id" : 3 } ,
137
165
] ) ;
138
- test_from_names ( None , config, issue, & [ "compiler" ] , & [ "user4" ] ) ;
166
+ test_from_names ( None , config, issue, & [ "compiler" ] , Ok ( & [ "user4" ] ) ) ;
139
167
}
140
168
141
169
#[ test]
@@ -155,7 +183,7 @@ fn groups_teams_users() {
155
183
config,
156
184
issue,
157
185
& [ "team1" , "group1" , "user3" ] ,
158
- & [ "t-user1" , "t-user2" , "user1" , "user3" ] ,
186
+ Ok ( & [ "t-user1" , "t-user2" , "user1" , "user3" ] ) ,
159
187
) ;
160
188
}
161
189
@@ -173,14 +201,14 @@ fn group_team_user_precedence() {
173
201
config. clone ( ) ,
174
202
issue. clone ( ) ,
175
203
& [ "compiler" ] ,
176
- & [ "user2" ] ,
204
+ Ok ( & [ "user2" ] ) ,
177
205
) ;
178
206
test_from_names (
179
207
Some ( teams. clone ( ) ) ,
180
208
config. clone ( ) ,
181
209
issue. clone ( ) ,
182
210
& [ "rust-lang/compiler" ] ,
183
- & [ "user2" ] ,
211
+ Ok ( & [ "user2" ] ) ,
184
212
) ;
185
213
}
186
214
@@ -200,22 +228,22 @@ fn what_do_slashes_mean() {
200
228
config. clone ( ) ,
201
229
issue. clone ( ) ,
202
230
& [ "foo/bar" ] ,
203
- & [ "foo-user" ] ,
231
+ Ok ( & [ "foo-user" ] ) ,
204
232
) ;
205
233
// Since this is rust-lang-nursery, it uses the rust-lang team, not the group.
206
234
test_from_names (
207
235
Some ( teams. clone ( ) ) ,
208
236
config. clone ( ) ,
209
237
issue. clone ( ) ,
210
238
& [ "rust-lang/compiler" ] ,
211
- & [ "t-user1" ] ,
239
+ Ok ( & [ "t-user1" ] ) ,
212
240
) ;
213
241
test_from_names (
214
242
Some ( teams. clone ( ) ) ,
215
243
config. clone ( ) ,
216
244
issue. clone ( ) ,
217
245
& [ "rust-lang-nursery/compiler" ] ,
218
- & [ "user2" ] ,
246
+ Ok ( & [ "user2" ] ) ,
219
247
) ;
220
248
}
221
249
@@ -227,11 +255,13 @@ fn invalid_org_doesnt_match() {
227
255
compiler = [ "user2" ]
228
256
) ;
229
257
let issue = generic_issue ( "octocat" , "rust-lang/rust" ) ;
230
- let ( teams, config, issue) = convert_simplified ( Some ( teams) , config, issue) ;
231
- let names = vec ! [ "github/compiler" . to_string( ) ] ;
232
- match candidate_reviewers_from_names ( & teams, & config, & issue, & names) {
233
- Ok ( x) => panic ! ( "expected err, got {x:?}" ) ,
234
- Err ( FindReviewerError :: TeamNotFound ( _) ) => { }
235
- Err ( e) => panic ! ( "unexpected error {e:?}" ) ,
236
- }
258
+ test_from_names (
259
+ Some ( teams) ,
260
+ config,
261
+ issue,
262
+ & [ "github/compiler" ] ,
263
+ Err ( FindReviewerError :: TeamNotFound (
264
+ "github/compiler" . to_string ( ) ,
265
+ ) ) ,
266
+ ) ;
237
267
}
0 commit comments