//@ no-prefer-dynamic
//@ compile-flags: --test -Cpanic=abort -Zpanic_abort_tests
//@ run-flags: --test-threads=1
//@ run-fail
//@ check-run-results
//@ exec-env:RUST_BACKTRACE=0
//@ normalize-stdout-test: "finished in \d+\.\d+s" -> "finished in $$TIME"

//@ ignore-android #120567
//@ ignore-wasm no panic or subprocess support
//@ ignore-emscripten no panic or subprocess support
//@ ignore-sgx no subprocess support

#![cfg(test)]
#![feature(test)]

extern crate test;

use std::io::Write;
use std::env;
use test::Bencher;

#[test]
fn it_works() {
    assert_eq!(1 + 1, 2);
}

#[test]
#[should_panic]
fn it_panics() {
    assert_eq!(1 + 1, 4);
}

#[test]
fn it_fails() {
    println!("hello, world");
    writeln!(std::io::stdout(), "testing123").unwrap();
    writeln!(std::io::stderr(), "testing321").unwrap();
    assert_eq!(1 + 1, 5);
}

#[test]
fn it_exits() {
    std::process::exit(123);
}

#[test]
fn no_residual_environment() {
    for (key, _) in env::vars() {
        // Look for keys like __RUST_TEST_INVOKE.
        if key.contains("TEST_INVOKE") {
            panic!("shouldn't have '{}' in environment", key);
        }
    }
}

#[bench]
fn benchmark(b: &mut Bencher) {
    b.iter(|| assert_eq!(1 + 1, 2));
}
