compiletest: Add --target-panic, needs-unwind
This commit is contained in:
parent
bb491ed239
commit
568d9c5547
@ -171,6 +171,12 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq)]
|
||||
pub enum PanicStrategy {
|
||||
Unwind,
|
||||
Abort,
|
||||
}
|
||||
|
||||
/// Configuration for compiletest
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Config {
|
||||
@ -262,6 +268,10 @@ pub struct Config {
|
||||
/// Flags to pass to the compiler when building for the target
|
||||
pub target_rustcflags: Option<String>,
|
||||
|
||||
/// What panic strategy the target is built with. Unwind supports Abort, but
|
||||
/// not vice versa.
|
||||
pub target_panic: PanicStrategy,
|
||||
|
||||
/// Target system to be tested
|
||||
pub target: String,
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
use tracing::*;
|
||||
|
||||
use crate::common::{CompareMode, Config, Debugger, FailMode, Mode, PassMode};
|
||||
use crate::common::{CompareMode, Config, Debugger, FailMode, Mode, PanicStrategy, PassMode};
|
||||
use crate::util;
|
||||
use crate::{extract_cdb_version, extract_gdb_version};
|
||||
|
||||
@ -111,6 +111,12 @@ pub fn from_reader<R: Read>(config: &Config, testfile: &Path, rdr: R) -> Self {
|
||||
props.ignore = true;
|
||||
}
|
||||
|
||||
if config.target_panic == PanicStrategy::Abort
|
||||
&& config.parse_name_directive(ln, "needs-unwind")
|
||||
{
|
||||
props.ignore = true;
|
||||
}
|
||||
|
||||
if config.target == "wasm32-unknown-unknown" && config.parse_check_run_results(ln) {
|
||||
props.ignore = true;
|
||||
}
|
||||
|
@ -5,7 +5,9 @@
|
||||
|
||||
extern crate test;
|
||||
|
||||
use crate::common::{expected_output_path, output_base_dir, output_relative_path, UI_EXTENSIONS};
|
||||
use crate::common::{
|
||||
expected_output_path, output_base_dir, output_relative_path, PanicStrategy, UI_EXTENSIONS,
|
||||
};
|
||||
use crate::common::{CompareMode, Config, Debugger, Mode, PassMode, Pretty, TestPaths};
|
||||
use crate::util::logv;
|
||||
use getopts::Options;
|
||||
@ -98,6 +100,7 @@ pub fn parse_config(args: Vec<String>) -> Config {
|
||||
)
|
||||
.optopt("", "host-rustcflags", "flags to pass to rustc for host", "FLAGS")
|
||||
.optopt("", "target-rustcflags", "flags to pass to rustc for target", "FLAGS")
|
||||
.optopt("", "target-panic", "what panic strategy the target supports", "unwind | abort")
|
||||
.optflag("", "verbose", "run tests verbosely, showing all output")
|
||||
.optflag(
|
||||
"",
|
||||
@ -238,6 +241,11 @@ fn make_absolute(path: PathBuf) -> PathBuf {
|
||||
runtool: matches.opt_str("runtool"),
|
||||
host_rustcflags: matches.opt_str("host-rustcflags"),
|
||||
target_rustcflags: matches.opt_str("target-rustcflags"),
|
||||
target_panic: match matches.opt_str("target-panic").as_deref() {
|
||||
Some("unwind") | None => PanicStrategy::Unwind,
|
||||
Some("abort") => PanicStrategy::Abort,
|
||||
_ => panic!("unknown `--target-panic` option `{}` given", mode),
|
||||
},
|
||||
target,
|
||||
host: opt_str2(matches.opt_str("host")),
|
||||
cdb,
|
||||
|
Loading…
Reference in New Issue
Block a user