allow RUST_BACKTRACE=0 to act as if unset
/# This is a combination of 16 commits. /# The first commit's message is: allow RUST_BACKTRACE=disabled to act as if unset When RUST_BACKTRACE is set to "disabled" then this acts as if the env. var is unset. /# This is the 2nd commit message: case insensitive "DiSaBLeD" RUST_BACKTRACE value previously it expected a lowercase "disabled" to treat the env. var as unset /# This is the 3rd commit message: RUST_BACKTRACE=0 acts as if unset previously RUST_BACKTRACE=disabled was doing the same thing /# This is the 4th commit message: RUST_BACKTRACE=0|n|no|off acts as if unset previously only RUST_BACKTRACE=0 acted as if RUST_BACKTRACE was unset Now added more options (case-insensitive): 'n','no' and 'off' eg. RUST_BACKTRACE=oFF /# This is the 5th commit message: DRY on the value of 2 DRY=don't repeat yourself Because having to remember to keep the two places of '2' in sync is not ideal, even though this is a simple enough case. /# This is the 6th commit message: Revert "DRY on the value of 2" This reverts commit 95a0479d5cf72a2b2d9d21ec0bed2823ed213fef. Nevermind this DRY on 2, because we already have a RY on 1, besides the code is less readable this way... /# This is the 7th commit message: attempt to document unsetting RUST_BACKTRACE /# This is the 8th commit message: curb allocations when checking for RUST_BACKTRACE this means we don't check for case-insensitivity anymore /# This is the 9th commit message: as decided, RUST_BACKTRACE=0 turns off backtrace /# This is the 10th commit message: RUST_TEST_NOCAPTURE=0 acts as if unset (that is, capture is on) Any other value acts as if nocapture is enabled (that is, capture is off) /# This is the 11th commit message: update other RUST_TEST_NOCAPTURE occurrences apparently only one place needs updating /# This is the 12th commit message: update RUST_BACKTRACE in man page /# This is the 13th commit message: handle an occurrence of RUST_BACKTRACE /# This is the 14th commit message: ensure consistency with new rules for backtrace /# This is the 15th commit message: a more concise comment for RUST_TEST_NOCAPTURE /# This is the 16th commit message: update RUST_TEST_NOCAPTURE in man page
This commit is contained in:
parent
3399d19a2c
commit
e1d2eda7f3
9 changed files with 59 additions and 17 deletions
|
|
@ -86,6 +86,16 @@ fn runtest(me: &str) {
|
|||
assert!(!s.contains("stack backtrace") && !s.contains(&expected("foo")),
|
||||
"bad output2: {}", s);
|
||||
|
||||
// Make sure the stack trace is *not* printed
|
||||
// (RUST_BACKTRACE=0 acts as if it were unset from our own environment,
|
||||
// in case developer is running `make check` with it set.)
|
||||
let p = template(me).arg("fail").env("RUST_BACKTRACE","0").spawn().unwrap();
|
||||
let out = p.wait_with_output().unwrap();
|
||||
assert!(!out.status.success());
|
||||
let s = str::from_utf8(&out.stderr).unwrap();
|
||||
assert!(!s.contains("stack backtrace") && !s.contains(" - foo"),
|
||||
"bad output3: {}", s);
|
||||
|
||||
// Make sure a stack trace is printed
|
||||
let p = template(me).arg("double-fail").spawn().unwrap();
|
||||
let out = p.wait_with_output().unwrap();
|
||||
|
|
|
|||
|
|
@ -8,6 +8,17 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
fn check_for_no_backtrace(test: std::process::Output) {
|
||||
assert!(!test.status.success());
|
||||
let err = String::from_utf8_lossy(&test.stderr);
|
||||
let mut it = err.lines();
|
||||
|
||||
assert_eq!(it.next().map(|l| l.starts_with("thread '<unnamed>' panicked at")), Some(true));
|
||||
assert_eq!(it.next(), Some("note: Run with `RUST_BACKTRACE=1` for a backtrace."));
|
||||
assert_eq!(it.next().map(|l| l.starts_with("thread '<main>' panicked at")), Some(true));
|
||||
assert_eq!(it.next(), None);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
if args.len() > 1 && args[1] == "run_test" {
|
||||
|
|
@ -21,13 +32,11 @@ fn main() {
|
|||
.env_remove("RUST_BACKTRACE")
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(!test.status.success());
|
||||
let err = String::from_utf8_lossy(&test.stderr);
|
||||
let mut it = err.lines();
|
||||
|
||||
assert_eq!(it.next().map(|l| l.starts_with("thread '<unnamed>' panicked at")), Some(true));
|
||||
assert_eq!(it.next(), Some("note: Run with `RUST_BACKTRACE=1` for a backtrace."));
|
||||
assert_eq!(it.next().map(|l| l.starts_with("thread '<main>' panicked at")), Some(true));
|
||||
assert_eq!(it.next(), None);
|
||||
check_for_no_backtrace(test);
|
||||
let test = std::process::Command::new(&args[0]).arg("run_test")
|
||||
.env("RUST_BACKTRACE","0")
|
||||
.output()
|
||||
.unwrap();
|
||||
check_for_no_backtrace(test);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue