@@ -99,6 +99,7 @@ pub struct Test {
9999 release : bool ,
100100 test_runner_path : Option < PathBuf > ,
101101 extra_options : Vec < String > ,
102+ target_triple : String ,
102103}
103104
104105type TestStep = fn ( & mut Test ) -> Result < ( ) > ;
@@ -138,6 +139,17 @@ impl Test {
138139 let crate_data = manifest:: CrateData :: new ( & crate_path, None ) ?;
139140 let any_browser = chrome || firefox || safari;
140141
142+ let target_triple = {
143+ let mut iter = extra_options. iter ( ) ;
144+ if iter. by_ref ( ) . any ( |option| option == "--target" ) {
145+ iter. next ( ) . map ( |s| s. as_str ( ) )
146+ } else {
147+ None
148+ }
149+ . unwrap_or ( "wasm32-unknown-unknown" )
150+ . to_owned ( )
151+ } ;
152+
141153 if !node && !any_browser {
142154 bail ! ( "Must specify at least one of `--node`, `--chrome`, `--firefox`, or `--safari`" )
143155 }
@@ -164,6 +176,7 @@ impl Test {
164176 headless,
165177 release,
166178 test_runner_path : None ,
179+ target_triple,
167180 extra_options,
168181 } )
169182 }
@@ -251,7 +264,7 @@ impl Test {
251264
252265 fn step_check_for_wasm_target ( & mut self ) -> Result < ( ) > {
253266 info ! ( "Adding wasm-target..." ) ;
254- build:: wasm_target:: check_for_wasm_target ( "wasm32-unknown-unknown" ) ?;
267+ build:: wasm_target:: check_for_wasm_target ( & self . target_triple ) ?;
255268 info ! ( "Adding wasm-target was successful." ) ;
256269 Ok ( ( ) )
257270 }
@@ -267,7 +280,12 @@ impl Test {
267280 } else {
268281 & self . extra_options
269282 } ;
270- build:: cargo_build_wasm_tests ( & self . crate_path , !self . release , extra_options) ?;
283+ build:: cargo_build_wasm_tests (
284+ & self . crate_path ,
285+ !self . release ,
286+ extra_options,
287+ & self . target_triple ,
288+ ) ?;
271289
272290 info ! ( "Finished compiling tests to wasm." ) ;
273291 Ok ( ( ) )
@@ -311,17 +329,26 @@ impl Test {
311329 fn step_test_node ( & mut self ) -> Result < ( ) > {
312330 assert ! ( self . node) ;
313331 info ! ( "Running tests in node..." ) ;
332+ let runner_env = format ! (
333+ "CARGO_TARGET_{}_RUNNER" ,
334+ self . target_triple. replace( '-' , "_" ) . to_uppercase( )
335+ ) ;
336+ let runner_path = self
337+ . test_runner_path
338+ . as_ref ( )
339+ . unwrap ( )
340+ . to_str ( )
341+ . unwrap ( )
342+ . to_string ( ) ;
314343 test:: cargo_test_wasm (
315344 & self . crate_path ,
316345 self . release ,
317346 vec ! [
318- (
319- "CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER" ,
320- & * * self . test_runner_path. as_ref( ) . unwrap( ) ,
321- ) ,
322- ( "WASM_BINDGEN_TEST_ONLY_NODE" , "1" . as_ref( ) ) ,
347+ ( runner_env, runner_path) ,
348+ ( "WASM_BINDGEN_TEST_ONLY_NODE" . to_string( ) , "1" . to_string( ) ) ,
323349 ] ,
324350 & self . extra_options ,
351+ & self . target_triple ,
325352 ) ?;
326353 info ! ( "Finished running tests in node." ) ;
327354 Ok ( ( ) )
@@ -339,16 +366,21 @@ impl Test {
339366
340367 fn step_test_chrome ( & mut self ) -> Result < ( ) > {
341368 let chromedriver = self . chromedriver . as_ref ( ) . unwrap ( ) . display ( ) . to_string ( ) ;
342- let chromedriver = chromedriver. as_str ( ) ;
343369 info ! (
344370 "Running tests in Chrome with chromedriver at {}" ,
345371 chromedriver
346372 ) ;
347373
348374 let mut envs = self . webdriver_env ( ) ;
349- envs. push ( ( "CHROMEDRIVER" , chromedriver) ) ;
375+ envs. push ( ( "CHROMEDRIVER" . to_string ( ) , chromedriver) ) ;
350376
351- test:: cargo_test_wasm ( & self . crate_path , self . release , envs, & self . extra_options ) ?;
377+ test:: cargo_test_wasm (
378+ & self . crate_path ,
379+ self . release ,
380+ envs,
381+ & self . extra_options ,
382+ & self . target_triple ,
383+ ) ?;
352384 Ok ( ( ) )
353385 }
354386
@@ -364,16 +396,21 @@ impl Test {
364396
365397 fn step_test_firefox ( & mut self ) -> Result < ( ) > {
366398 let geckodriver = self . geckodriver . as_ref ( ) . unwrap ( ) . display ( ) . to_string ( ) ;
367- let geckodriver = geckodriver. as_str ( ) ;
368399 info ! (
369400 "Running tests in Firefox with geckodriver at {}" ,
370401 geckodriver
371402 ) ;
372403
373404 let mut envs = self . webdriver_env ( ) ;
374- envs. push ( ( "GECKODRIVER" , geckodriver) ) ;
405+ envs. push ( ( "GECKODRIVER" . to_string ( ) , geckodriver) ) ;
375406
376- test:: cargo_test_wasm ( & self . crate_path , self . release , envs, & self . extra_options ) ?;
407+ test:: cargo_test_wasm (
408+ & self . crate_path ,
409+ self . release ,
410+ envs,
411+ & self . extra_options ,
412+ & self . target_triple ,
413+ ) ?;
377414 Ok ( ( ) )
378415 }
379416
@@ -386,28 +423,43 @@ impl Test {
386423
387424 fn step_test_safari ( & mut self ) -> Result < ( ) > {
388425 let safaridriver = self . safaridriver . as_ref ( ) . unwrap ( ) . display ( ) . to_string ( ) ;
389- let safaridriver = safaridriver. as_str ( ) ;
390426 info ! (
391427 "Running tests in Safari with safaridriver at {}" ,
392428 safaridriver
393429 ) ;
394430
395431 let mut envs = self . webdriver_env ( ) ;
396- envs. push ( ( "SAFARIDRIVER" , safaridriver) ) ;
432+ envs. push ( ( "SAFARIDRIVER" . to_string ( ) , safaridriver) ) ;
397433
398- test:: cargo_test_wasm ( & self . crate_path , self . release , envs, & self . extra_options ) ?;
434+ test:: cargo_test_wasm (
435+ & self . crate_path ,
436+ self . release ,
437+ envs,
438+ & self . extra_options ,
439+ & self . target_triple ,
440+ ) ?;
399441 Ok ( ( ) )
400442 }
401443
402- fn webdriver_env ( & self ) -> Vec < ( & ' static str , & str ) > {
403- let test_runner = self . test_runner_path . as_ref ( ) . unwrap ( ) . to_str ( ) . unwrap ( ) ;
444+ fn webdriver_env ( & self ) -> Vec < ( String , String ) > {
445+ let test_runner = self
446+ . test_runner_path
447+ . as_ref ( )
448+ . unwrap ( )
449+ . to_str ( )
450+ . unwrap ( )
451+ . to_string ( ) ;
404452 info ! ( "Using wasm-bindgen test runner at {}" , test_runner) ;
453+ let runner_env = format ! (
454+ "CARGO_TARGET_{}_RUNNER" ,
455+ self . target_triple. replace( '-' , "_" ) . to_uppercase( )
456+ ) ;
405457 let mut envs = vec ! [
406- ( "CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER" , test_runner) ,
407- ( "WASM_BINDGEN_TEST_ONLY_WEB" , "1" ) ,
458+ ( runner_env , test_runner) ,
459+ ( "WASM_BINDGEN_TEST_ONLY_WEB" . to_string ( ) , "1" . to_string ( ) ) ,
408460 ] ;
409461 if !self . headless {
410- envs. push ( ( "NO_HEADLESS" , "1" ) ) ;
462+ envs. push ( ( "NO_HEADLESS" . to_string ( ) , "1" . to_string ( ) ) ) ;
411463 }
412464 envs
413465 }
0 commit comments