libtest: JSON formatting is now only available in unstable builds
libtest: Added the -Z option for unstable options
This commit is contained in:
@@ -399,7 +399,9 @@ fn optgroups() -> getopts::Options {
|
||||
.optopt("", "format", "Configure formatting of output:
|
||||
pretty = Print verbose output;
|
||||
terse = Display one character per test;
|
||||
json = Output a json document", "pretty|terse|json");
|
||||
json = Output a json document", "pretty|terse|json")
|
||||
.optopt("Z", "", "Enable nightly-only flags:
|
||||
unstable-options = Allow use of experimental features", "unstable-options");
|
||||
return opts
|
||||
}
|
||||
|
||||
@@ -435,8 +437,19 @@ Test Attributes:
|
||||
usage = options.usage(&message));
|
||||
}
|
||||
|
||||
// FIXME: Copied from libsyntax until linkage errors are resolved.
|
||||
fn is_nightly() -> bool {
|
||||
// Whether this is a feature-staged build, i.e. on the beta or stable channel
|
||||
let disable_unstable_features = option_env!("CFG_DISABLE_UNSTABLE_FEATURES").is_some();
|
||||
// Whether we should enable unstable features for bootstrapping
|
||||
let bootstrap = env::var("RUSTC_BOOTSTRAP").is_ok();
|
||||
|
||||
bootstrap || !disable_unstable_features
|
||||
}
|
||||
|
||||
// Parses command line arguments into test options
|
||||
pub fn parse_opts(args: &[String]) -> Option<OptRes> {
|
||||
let mut allow_unstable = false;
|
||||
let opts = optgroups();
|
||||
let args = args.get(1..).unwrap_or(args);
|
||||
let matches = match opts.parse(args) {
|
||||
@@ -444,6 +457,21 @@ pub fn parse_opts(args: &[String]) -> Option<OptRes> {
|
||||
Err(f) => return Some(Err(f.to_string())),
|
||||
};
|
||||
|
||||
if let Some(opt) = matches.opt_str("Z") {
|
||||
if !is_nightly() {
|
||||
return Some(Err("the option `Z` is only accepted on the nightly compiler".into()));
|
||||
}
|
||||
|
||||
match &*opt {
|
||||
"unstable-options" => {
|
||||
allow_unstable = true;
|
||||
}
|
||||
_ => {
|
||||
return Some(Err("Unrecognized option to `Z`".into()));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if matches.opt_present("h") {
|
||||
usage(&args[0], &opts);
|
||||
return None;
|
||||
@@ -504,7 +532,13 @@ pub fn parse_opts(args: &[String]) -> Option<OptRes> {
|
||||
None if quiet => OutputFormat::Terse,
|
||||
Some("pretty") | None => OutputFormat::Pretty,
|
||||
Some("terse") => OutputFormat::Terse,
|
||||
Some("json") => OutputFormat::Json,
|
||||
Some("json") => {
|
||||
if !allow_unstable {
|
||||
return Some(
|
||||
Err("The \"json\" format is only accepted on the nightly compiler".into()));
|
||||
}
|
||||
OutputFormat::Json
|
||||
},
|
||||
|
||||
Some(v) => {
|
||||
return Some(Err(format!("argument for --format must be pretty, terse, or json (was \
|
||||
|
||||
Reference in New Issue
Block a user