creator_simctl/
terminate.rs1use super::{Device, Result, Validate};
2
3impl Device {
4 pub fn terminate(&self, bundle_id: &str) -> Result<()> {
7 self.simctl()
8 .command("terminate")
9 .arg(&self.udid)
10 .arg(bundle_id)
11 .output()?
12 .validate()
13 }
14}
15
16#[cfg(test)]
17mod tests {
18 use serial_test::serial;
19 use std::sync::{Arc, Mutex};
20
21 use super::*;
22 use crate::mock;
23
24 #[test]
25 #[serial]
26 fn test_terminate() -> Result<()> {
27 mock::device()?.boot()?;
28
29 let result = Arc::new(Mutex::new(None));
30
31 std::thread::spawn({
32 let result = result.clone();
33
34 move || {
35 fn test_terminate_inner() -> Result<()> {
36 std::thread::sleep(std::time::Duration::from_secs(1));
37
38 mock::device()?.terminate("com.apple.mobilesafari")
39 }
40
41 let mut result = result.lock().unwrap();
42 result.replace(Some(test_terminate_inner()));
43 }
44 });
45
46 mock::device()?.launch("com.apple.mobilesafari").exec()?;
47
48 let result = result.lock().unwrap().take().flatten();
49 assert!(result.is_some());
50 assert!(result.unwrap().is_ok());
51
52 mock::device()?.shutdown()?;
53
54 Ok(())
55 }
56}