2 // ignore-android FIXME #17520
3 // ignore-emscripten spawning processes is not supported
4 // ignore-openbsd no support for libbacktrace without filename
5 // ignore-sgx no processes
6 // ignore-msvc see #62897 and `backtrace-debuginfo.rs` test
7 // ignore-fuchsia Backtraces not symbolized
9 // compile-flags:-Cstrip=none
12 use std::process::Command;
16 let args: Vec<String> = env::args().collect();
17 if args.len() >= 2 && args[1] == "force" {
18 println!("stack backtrace:\n{}", std::backtrace::Backtrace::force_capture());
19 } else if args.len() >= 2 {
20 println!("stack backtrace:\n{}", std::backtrace::Backtrace::capture());
27 fn runtest(me: &str) {
28 env::remove_var("RUST_BACKTRACE");
29 env::remove_var("RUST_LIB_BACKTRACE");
31 let p = Command::new(me).arg("a").env("RUST_BACKTRACE", "1").output().unwrap();
32 assert!(p.status.success());
33 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));
34 assert!(String::from_utf8_lossy(&p.stdout).contains("backtrace::main"));
36 let p = Command::new(me).arg("a").env("RUST_BACKTRACE", "0").output().unwrap();
37 assert!(p.status.success());
38 assert!(String::from_utf8_lossy(&p.stdout).contains("disabled backtrace\n"));
40 let p = Command::new(me).arg("a").output().unwrap();
41 assert!(p.status.success());
42 assert!(String::from_utf8_lossy(&p.stdout).contains("disabled backtrace\n"));
44 let p = Command::new(me)
46 .env("RUST_LIB_BACKTRACE", "1")
47 .env("RUST_BACKTRACE", "1")
50 assert!(p.status.success());
51 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));
53 let p = Command::new(me)
55 .env("RUST_LIB_BACKTRACE", "0")
56 .env("RUST_BACKTRACE", "1")
59 assert!(p.status.success());
60 assert!(String::from_utf8_lossy(&p.stdout).contains("disabled backtrace\n"));
62 let p = Command::new(me)
64 .env("RUST_LIB_BACKTRACE", "0")
65 .env("RUST_BACKTRACE", "0")
68 assert!(p.status.success());
69 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));
71 let p = Command::new(me).arg("force").output().unwrap();
72 assert!(p.status.success());
73 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));