add the --json flag to compiletest

This commit is contained in:
Pietro Albini 2023-03-01 14:47:55 +01:00
parent 64165aac68
commit d7049cabd0
No known key found for this signature in database
GPG key ID: CD76B35F7734769E
2 changed files with 11 additions and 5 deletions

View file

@ -9,7 +9,7 @@ use std::str::FromStr;
use crate::util::{add_dylib_path, PathBufExt};
use lazycell::LazyCell;
use test::ColorConfig;
use test::{ColorConfig, OutputFormat};
#[derive(Clone, Copy, PartialEq, Debug)]
pub enum Mode {
@ -337,7 +337,7 @@ pub struct Config {
pub verbose: bool,
/// Print one character per test instead of one line
pub quiet: bool,
pub format: OutputFormat,
/// Whether to use colors in test.
pub color: ColorConfig,

View file

@ -114,6 +114,7 @@ pub fn parse_config(args: Vec<String>) -> Config {
)
.optflag("", "quiet", "print one character per test instead of one line")
.optopt("", "color", "coloring: auto, always, never", "WHEN")
.optflag("", "json", "emit json output instead of plaintext output")
.optopt("", "logfile", "file to log test execution to", "FILE")
.optopt("", "target", "the target to build for", "TARGET")
.optopt("", "host", "the host to build for", "HOST")
@ -281,7 +282,12 @@ pub fn parse_config(args: Vec<String>) -> Config {
&& !opt_str2(matches.opt_str("adb-test-dir")).is_empty(),
lldb_python_dir: matches.opt_str("lldb-python-dir"),
verbose: matches.opt_present("verbose"),
quiet: matches.opt_present("quiet"),
format: match (matches.opt_present("quiet"), matches.opt_present("json")) {
(true, true) => panic!("--quiet and --json are incompatible"),
(true, false) => test::OutputFormat::Terse,
(false, true) => test::OutputFormat::Json,
(false, false) => test::OutputFormat::Pretty,
},
only_modified: matches.opt_present("only-modified"),
color,
remote_test_client: matches.opt_str("remote-test-client").map(PathBuf::from),
@ -339,7 +345,7 @@ pub fn log_config(config: &Config) {
logv(c, format!("ar: {}", config.ar));
logv(c, format!("linker: {:?}", config.linker));
logv(c, format!("verbose: {}", config.verbose));
logv(c, format!("quiet: {}", config.quiet));
logv(c, format!("format: {:?}", config.format));
logv(c, "\n".to_string());
}
@ -501,7 +507,7 @@ pub fn test_opts(config: &Config) -> test::TestOpts {
filters: config.filters.clone(),
filter_exact: config.filter_exact,
run_ignored: if config.run_ignored { test::RunIgnored::Yes } else { test::RunIgnored::No },
format: if config.quiet { test::OutputFormat::Terse } else { test::OutputFormat::Pretty },
format: config.format,
logfile: config.logfile.clone(),
run_tests: true,
bench_benchmarks: true,