]> git.proxmox.com Git - rustc.git/blame - src/test/ui/std-backtrace.rs
New upstream version 1.49.0+dfsg1
[rustc.git] / src / test / ui / std-backtrace.rs
CommitLineData
e1599b0c
XL
1// run-pass
2// ignore-android FIXME #17520
3// ignore-cloudabi spawning processes is not supported
4// ignore-emscripten spawning processes is not supported
5// ignore-openbsd no support for libbacktrace without filename
6// ignore-sgx no processes
7// ignore-msvc see #62897 and `backtrace-debuginfo.rs` test
8// compile-flags:-g
9
10#![feature(backtrace)]
11
12use std::env;
13use std::process::Command;
14use std::str;
15
16fn main() {
17 let args: Vec<String> = env::args().collect();
18 if args.len() >= 2 && args[1] == "force" {
72b1a166 19 println!("stack backtrace:\n{}", std::backtrace::Backtrace::force_capture());
e1599b0c 20 } else if args.len() >= 2 {
72b1a166 21 println!("stack backtrace:\n{}", std::backtrace::Backtrace::capture());
e1599b0c
XL
22 } else {
23 runtest(&args[0]);
24 println!("test ok");
25 }
26}
27
28fn runtest(me: &str) {
29 env::remove_var("RUST_BACKTRACE");
30 env::remove_var("RUST_LIB_BACKTRACE");
31
32 let p = Command::new(me).arg("a").env("RUST_BACKTRACE", "1").output().unwrap();
33 assert!(p.status.success());
34 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));
35 assert!(String::from_utf8_lossy(&p.stdout).contains("backtrace::main"));
36
37 let p = Command::new(me).arg("a").env("RUST_BACKTRACE", "0").output().unwrap();
38 assert!(p.status.success());
39 assert!(String::from_utf8_lossy(&p.stdout).contains("disabled backtrace\n"));
40
41 let p = Command::new(me).arg("a").output().unwrap();
42 assert!(p.status.success());
43 assert!(String::from_utf8_lossy(&p.stdout).contains("disabled backtrace\n"));
44
45 let p = Command::new(me)
46 .arg("a")
47 .env("RUST_LIB_BACKTRACE", "1")
48 .env("RUST_BACKTRACE", "1")
49 .output()
50 .unwrap();
51 assert!(p.status.success());
52 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));
53
54 let p = Command::new(me)
55 .arg("a")
56 .env("RUST_LIB_BACKTRACE", "0")
57 .env("RUST_BACKTRACE", "1")
58 .output()
59 .unwrap();
60 assert!(p.status.success());
61 assert!(String::from_utf8_lossy(&p.stdout).contains("disabled backtrace\n"));
62
63 let p = Command::new(me)
64 .arg("force")
65 .env("RUST_LIB_BACKTRACE", "0")
66 .env("RUST_BACKTRACE", "0")
67 .output()
68 .unwrap();
69 assert!(p.status.success());
70 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));
71
72 let p = Command::new(me).arg("force").output().unwrap();
73 assert!(p.status.success());
74 assert!(String::from_utf8_lossy(&p.stdout).contains("stack backtrace:\n"));
75}