提交 e570e9e7 编写于 作者: G Gilad Naaman

libtest: JSON formatting is now only available in unstable builds

libtest: Added the -Z option for unstable options
上级 588a6a35
......@@ -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 @@ fn usage(binary: &str, options: &getopts::Options) {
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 \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册