• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use std::env;
2 use std::process::Command;
3 use std::path::{Path, PathBuf};
4 
main()5 fn main() {
6     let args = env::args_os()
7         .skip(1)
8         .filter(|arg| arg != "--quiet")
9         .collect::<Vec<_>>();
10     assert_eq!(args.len(), 1);
11     let test = PathBuf::from(&args[0]);
12     let dst = Path::new("/data/local/tmp").join(test.file_name().unwrap());
13 
14     let status = Command::new("adb")
15         .arg("wait-for-device")
16         .status()
17         .expect("failed to run: adb wait-for-device");
18     assert!(status.success());
19 
20     let status = Command::new("adb")
21         .arg("push")
22         .arg(&test)
23         .arg(&dst)
24         .status()
25         .expect("failed to run: adb push");
26     assert!(status.success());
27 
28     let output = Command::new("adb")
29         .arg("shell")
30         .arg("RUST_BACKTRACE=1")
31         .arg(&dst)
32         .output()
33         .expect("failed to run: adb shell");
34     assert!(status.success());
35 
36     let stdout = String::from_utf8_lossy(&output.stdout);
37     let stderr = String::from_utf8_lossy(&output.stderr);
38 
39     println!("status: {}\nstdout ---\n{}\nstderr ---\n{}",
40              output.status,
41              stdout,
42              stderr);
43 
44     if !stderr.lines().any(|l| (l.starts_with("PASSED ") && l.contains(" tests")) || l.starts_with("test result: ok"))
45         && !stdout.lines().any(|l| (l.starts_with("PASSED ") && l.contains(" tests")) || l.starts_with("test result: ok"))
46     {
47         panic!("failed to find successful test run");
48     };
49 }
50