@@ -8,15 +8,26 @@ fn test_from_names(
88 config : toml:: Value ,
99 issue : serde_json:: Value ,
1010 names : & [ & str ] ,
11- expected : & [ & str ] ,
11+ expected : Result < & [ & str ] , FindReviewerError > ,
1212) {
1313 let ( teams, config, issue) = convert_simplified ( teams, config, issue) ;
1414 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+ }
2031}
2132
2233/// Convert the simplified input in preparation for `candidate_reviewers_from_names`.
@@ -78,7 +89,15 @@ fn circular_groups() {
7889 other = [ "compiler" ]
7990 ) ;
8091 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+ ) ;
82101}
83102
84103#[ test]
@@ -91,7 +110,7 @@ fn nested_groups() {
91110 c = [ "a" , "b" ]
92111 ) ;
93112 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" ] ) ) ;
95114}
96115
97116#[ test]
@@ -102,7 +121,16 @@ fn candidate_filtered_author_only_candidate() {
102121 compiler = [ "nikomatsakis" ]
103122 ) ;
104123 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+ ) ;
106134}
107135
108136#[ test]
@@ -119,7 +147,7 @@ fn candidate_filtered_author() {
119147 config,
120148 issue,
121149 & [ "compiler" ] ,
122- & [ "user1" , "user3" , "user4" ] ,
150+ Ok ( & [ "user1" , "user3" , "user4" ] ) ,
123151 ) ;
124152}
125153
@@ -135,7 +163,7 @@ fn candidate_filtered_assignee() {
135163 { "login" : "user1" , "id" : 1 } ,
136164 { "login" : "user3" , "id" : 3 } ,
137165 ] ) ;
138- test_from_names ( None , config, issue, & [ "compiler" ] , & [ "user4" ] ) ;
166+ test_from_names ( None , config, issue, & [ "compiler" ] , Ok ( & [ "user4" ] ) ) ;
139167}
140168
141169#[ test]
@@ -155,7 +183,7 @@ fn groups_teams_users() {
155183 config,
156184 issue,
157185 & [ "team1" , "group1" , "user3" ] ,
158- & [ "t-user1" , "t-user2" , "user1" , "user3" ] ,
186+ Ok ( & [ "t-user1" , "t-user2" , "user1" , "user3" ] ) ,
159187 ) ;
160188}
161189
@@ -173,14 +201,14 @@ fn group_team_user_precedence() {
173201 config. clone ( ) ,
174202 issue. clone ( ) ,
175203 & [ "compiler" ] ,
176- & [ "user2" ] ,
204+ Ok ( & [ "user2" ] ) ,
177205 ) ;
178206 test_from_names (
179207 Some ( teams. clone ( ) ) ,
180208 config. clone ( ) ,
181209 issue. clone ( ) ,
182210 & [ "rust-lang/compiler" ] ,
183- & [ "user2" ] ,
211+ Ok ( & [ "user2" ] ) ,
184212 ) ;
185213}
186214
@@ -200,22 +228,22 @@ fn what_do_slashes_mean() {
200228 config. clone ( ) ,
201229 issue. clone ( ) ,
202230 & [ "foo/bar" ] ,
203- & [ "foo-user" ] ,
231+ Ok ( & [ "foo-user" ] ) ,
204232 ) ;
205233 // Since this is rust-lang-nursery, it uses the rust-lang team, not the group.
206234 test_from_names (
207235 Some ( teams. clone ( ) ) ,
208236 config. clone ( ) ,
209237 issue. clone ( ) ,
210238 & [ "rust-lang/compiler" ] ,
211- & [ "t-user1" ] ,
239+ Ok ( & [ "t-user1" ] ) ,
212240 ) ;
213241 test_from_names (
214242 Some ( teams. clone ( ) ) ,
215243 config. clone ( ) ,
216244 issue. clone ( ) ,
217245 & [ "rust-lang-nursery/compiler" ] ,
218- & [ "user2" ] ,
246+ Ok ( & [ "user2" ] ) ,
219247 ) ;
220248}
221249
@@ -227,11 +255,13 @@ fn invalid_org_doesnt_match() {
227255 compiler = [ "user2" ]
228256 ) ;
229257 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+ ) ;
237267}
0 commit comments