]>
git.proxmox.com Git - rustc.git/blob - tests/ui/std-backtrace.rs
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"));