summaryrefslogtreecommitdiffstats
path: root/vendor/backtrace/ci/runtest-android.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/backtrace/ci/runtest-android.rs')
-rw-r--r--vendor/backtrace/ci/runtest-android.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/vendor/backtrace/ci/runtest-android.rs b/vendor/backtrace/ci/runtest-android.rs
new file mode 100644
index 000000000..dc70121dc
--- /dev/null
+++ b/vendor/backtrace/ci/runtest-android.rs
@@ -0,0 +1,50 @@
+use std::env;
+use std::process::Command;
+use std::path::{Path, PathBuf};
+
+fn main() {
+ let args = env::args_os()
+ .skip(1)
+ .filter(|arg| arg != "--quiet")
+ .collect::<Vec<_>>();
+ assert_eq!(args.len(), 1);
+ let test = PathBuf::from(&args[0]);
+ let dst = Path::new("/data/local/tmp").join(test.file_name().unwrap());
+
+ println!("waiting for device to come online...");
+ let status = Command::new("adb")
+ .arg("wait-for-device")
+ .status()
+ .expect("failed to run: adb wait-for-device");
+ assert!(status.success());
+
+ println!("pushing executable...");
+ let status = Command::new("adb")
+ .arg("push")
+ .arg(&test)
+ .arg(&dst)
+ .status()
+ .expect("failed to run: adb pushr");
+ assert!(status.success());
+
+ println!("executing tests...");
+ let output = Command::new("adb")
+ .arg("shell")
+ .arg(&dst)
+ .output()
+ .expect("failed to run: adb shell");
+ assert!(status.success());
+
+ println!("status: {}\nstdout ---\n{}\nstderr ---\n{}",
+ output.status,
+ String::from_utf8_lossy(&output.stdout),
+ String::from_utf8_lossy(&output.stderr));
+
+ let stdout = String::from_utf8_lossy(&output.stdout);
+ stdout.lines().find(|l|
+ (l.starts_with("PASSED ") && l.contains(" tests")) ||
+ l.starts_with("test result: ok")
+ ).unwrap_or_else(|| {
+ panic!("failed to find successful test run");
+ });
+}