@@ -234,4 +234,51 @@ mod test {
234
234
"# ) ;
235
235
assert ! ( metadata. extra_targets. unwrap( ) . is_empty( ) ) ;
236
236
}
237
+ #[ test]
238
+ fn test_select_extra_targets ( ) {
239
+ use crate :: docbuilder:: rustwide_builder:: TARGETS ;
240
+
241
+ let mut metadata = Metadata {
242
+ extra_targets : None ,
243
+ ..Metadata :: default ( )
244
+ } ;
245
+ const DEFAULT_TARGET : & str = "x86-unknown-linux-gnu" ;
246
+
247
+ // unchanged default_target, extra targets not specified
248
+ let tier_one = metadata. select_extra_targets ( DEFAULT_TARGET ) ;
249
+ // should be equal to TARGETS except for DEFAULT_TARGET
250
+ for actual in & tier_one {
251
+ assert ! ( TARGETS . contains( actual) ) ;
252
+ }
253
+ for expected in TARGETS {
254
+ if * expected == DEFAULT_TARGET {
255
+ assert ! ( !tier_one. contains( DEFAULT_TARGET ) ) ;
256
+ } else {
257
+ assert ! ( tier_one. contains( expected) ) ;
258
+ }
259
+ }
260
+
261
+ // unchanged default_target, extra targets specified to be empty
262
+ metadata. extra_targets = Some ( Vec :: new ( ) ) ;
263
+ assert ! ( metadata. select_extra_targets( DEFAULT_TARGET ) . is_empty( ) ) ;
264
+
265
+ // unchanged default_target, extra targets includes targets besides default_target
266
+ metadata. extra_targets = Some ( vec ! [ "i686-pc-windows-msvc" . into( ) , "i686-apple-darwin" . into( ) ] ) ;
267
+ let extras = metadata. select_extra_targets ( DEFAULT_TARGET ) ;
268
+ assert_eq ! ( extras. len( ) , 2 ) ;
269
+ assert ! ( extras. contains( "i686-pc-windows-msvc" ) ) ;
270
+ assert ! ( extras. contains( "i686-apple-darwin" ) ) ;
271
+
272
+ // make sure that default_target is not built twice
273
+ metadata. extra_targets = Some ( vec ! [ DEFAULT_TARGET . into( ) ] ) ;
274
+ assert ! ( metadata. select_extra_targets( DEFAULT_TARGET ) . is_empty( ) ) ;
275
+
276
+ // make sure that duplicates are removed
277
+ metadata. extra_targets = Some ( vec ! [ "i686-pc-windows-msvc" . into( ) , "i686-pc-windows-msvc" . into( ) ] ) ;
278
+ assert_eq ! ( metadata. select_extra_targets( DEFAULT_TARGET ) . len( ) , 1 ) ;
279
+
280
+ // try it with a different default target just for sanity
281
+ assert ! ( metadata. select_extra_targets( "i686-pc-windows-msvc" ) . is_empty( ) ) ;
282
+
283
+ }
237
284
}
0 commit comments