66// (https://github.com/snipsco/dinghy): cargo dinghy install, then cargo dinghy
77// test.
88
9- use std:: env;
109use std:: fs:: { self , File } ;
1110use std:: io:: Write ;
1211use std:: path:: Path ;
13- use std:: process;
1412use std:: process:: Command ;
13+ use std:: { env, process} ;
1514
1615macro_rules! t {
17- ( $e: expr) => ( match $e {
18- Ok ( e) => e,
19- Err ( e) => panic!( "{} failed with: {e}" , stringify!( $e) ) ,
20- } )
16+ ( $e: expr) => {
17+ match $e {
18+ Ok ( e) => e,
19+ Err ( e) => panic!( "{} failed with: {e}" , stringify!( $e) ) ,
20+ }
21+ } ;
2122}
2223
2324// Step one: Wrap as an app
2425fn package_as_simulator_app ( crate_name : & str , test_binary_path : & Path ) {
2526 println ! ( "Packaging simulator app" ) ;
2627 drop ( fs:: remove_dir_all ( "ios_simulator_app" ) ) ;
2728 t ! ( fs:: create_dir( "ios_simulator_app" ) ) ;
28- t ! ( fs:: copy( test_binary_path,
29- Path :: new( "ios_simulator_app" ) . join( crate_name) ) ) ;
29+ t ! ( fs:: copy(
30+ test_binary_path,
31+ Path :: new( "ios_simulator_app" ) . join( crate_name)
32+ ) ) ;
3033
3134 let mut f = t ! ( File :: create( "ios_simulator_app/Info.plist" ) ) ;
32- t ! ( f. write_all( format!( r#"
35+ t ! ( f. write_all(
36+ format!(
37+ r#"
3338 <?xml version="1.0" encoding="UTF-8"?>
3439 <!DOCTYPE plist PUBLIC
3540 "-//Apple//DTD PLIST 1.0//EN"
@@ -42,7 +47,11 @@ fn package_as_simulator_app(crate_name: &str, test_binary_path: &Path) {
4247 <string>com.rust.unittests</string>
4348 </dict>
4449 </plist>
45- "# , crate_name) . as_bytes( ) ) ) ;
50+ "# ,
51+ crate_name
52+ )
53+ . as_bytes( )
54+ ) ) ;
4655}
4756
4857// Step two: Start the iOS simulator
@@ -57,8 +66,10 @@ fn start_simulator() {
5766 for line in stdout. lines ( ) {
5867 if line. contains ( "rust_ios" ) {
5968 if found_rust_sim {
60- panic ! ( "Duplicate rust_ios simulators found. Please \
61- double-check xcrun simctl list.") ;
69+ panic ! (
70+ "Duplicate rust_ios simulators found. Please \
71+ double-check xcrun simctl list."
72+ ) ;
6273 }
6374 simulator_exists = true ;
6475 simulator_booted = line. contains ( "(Booted)" ) ;
@@ -69,62 +80,67 @@ fn start_simulator() {
6980 if simulator_exists == false {
7081 println ! ( "Creating iOS simulator" ) ;
7182 Command :: new ( "xcrun" )
72- . arg ( "simctl" )
73- . arg ( "create" )
74- . arg ( "rust_ios" )
75- . arg ( "com.apple.CoreSimulator.SimDeviceType.iPhone-SE" )
76- . arg ( "com.apple.CoreSimulator.SimRuntime.iOS-10-2" )
77- . check_status ( ) ;
83+ . arg ( "simctl" )
84+ . arg ( "create" )
85+ . arg ( "rust_ios" )
86+ . arg ( "com.apple.CoreSimulator.SimDeviceType.iPhone-SE" )
87+ . arg ( "com.apple.CoreSimulator.SimRuntime.iOS-10-2" )
88+ . check_status ( ) ;
7889 } else if simulator_booted == true {
7990 println ! ( "Shutting down already-booted simulator" ) ;
8091 Command :: new ( "xcrun" )
81- . arg ( "simctl" )
82- . arg ( "shutdown" )
83- . arg ( "rust_ios" )
84- . check_status ( ) ;
92+ . arg ( "simctl" )
93+ . arg ( "shutdown" )
94+ . arg ( "rust_ios" )
95+ . check_status ( ) ;
8596 }
8697
8798 println ! ( "Starting iOS simulator" ) ;
8899 // We can't uninstall the app (if present) as that will hang if the
89100 // simulator isn't completely booted; just erase the simulator instead.
90- Command :: new ( "xcrun" ) . arg ( "simctl" ) . arg ( "erase" ) . arg ( "rust_ios" ) . check_status ( ) ;
91- Command :: new ( "xcrun" ) . arg ( "simctl" ) . arg ( "boot" ) . arg ( "rust_ios" ) . check_status ( ) ;
101+ Command :: new ( "xcrun" )
102+ . arg ( "simctl" )
103+ . arg ( "erase" )
104+ . arg ( "rust_ios" )
105+ . check_status ( ) ;
106+ Command :: new ( "xcrun" )
107+ . arg ( "simctl" )
108+ . arg ( "boot" )
109+ . arg ( "rust_ios" )
110+ . check_status ( ) ;
92111}
93112
94113// Step three: Install the app
95114fn install_app_to_simulator ( ) {
96115 println ! ( "Installing app to simulator" ) ;
97116 Command :: new ( "xcrun" )
98- . arg ( "simctl" )
99- . arg ( "install" )
100- . arg ( "booted" )
101- . arg ( "ios_simulator_app/" )
102- . check_status ( ) ;
117+ . arg ( "simctl" )
118+ . arg ( "install" )
119+ . arg ( "booted" )
120+ . arg ( "ios_simulator_app/" )
121+ . check_status ( ) ;
103122}
104123
105124// Step four: Run the app
106125fn run_app_on_simulator ( ) {
107126 println ! ( "Running app" ) ;
108127 let output = t ! ( Command :: new( "xcrun" )
109- . arg( "simctl" )
110- . arg( "launch" )
111- . arg( "--console" )
112- . arg( "booted" )
113- . arg( "com.rust.unittests" )
114- . output( ) ) ;
128+ . arg( "simctl" )
129+ . arg( "launch" )
130+ . arg( "--console" )
131+ . arg( "booted" )
132+ . arg( "com.rust.unittests" )
133+ . output( ) ) ;
115134
116135 println ! ( "status: {}" , output. status) ;
117136 println ! ( "stdout --\n {}\n " , String :: from_utf8_lossy( & output. stdout) ) ;
118137 println ! ( "stderr --\n {}\n " , String :: from_utf8_lossy( & output. stderr) ) ;
119138
120139 let stdout = String :: from_utf8_lossy ( & output. stdout ) ;
121- let passed = stdout. lines ( )
122- . find ( |l|
123- ( l. contains ( "PASSED" ) &&
124- l. contains ( "tests" ) ) ||
125- l. contains ( "test result: ok" )
126- )
127- . unwrap_or ( false ) ;
140+ let passed = stdout
141+ . lines ( )
142+ . find ( |l| ( l. contains ( "PASSED" ) && l. contains ( "tests" ) ) || l. contains ( "test result: ok" ) )
143+ . unwrap_or ( false ) ;
128144
129145 println ! ( "Shutting down simulator" ) ;
130146 Command :: new ( "xcrun" )
0 commit comments