Skip to content

Commit

Permalink
Auto merge of #6358 - collin5:b4325, r=ehuss
Browse files Browse the repository at this point in the history
Add --quiet option for `cargo test`

Fixes #4325
  • Loading branch information
bors committed Mar 11, 2019
2 parents d09fe3f + d93b2d7 commit d74d879
Show file tree
Hide file tree
Showing 35 changed files with 119 additions and 11 deletions.
9 changes: 3 additions & 6 deletions src/bin/cargo/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ fn execute_subcommand(config: &mut Config, args: &ArgMatches<'_>) -> CliResult {

config.configure(
args.occurrences_of("verbose") as u32,
if args.is_present("quiet") {
if args.is_present("quiet") || subcommand_args.is_present("quiet") {
Some(true)
} else {
None
Expand Down Expand Up @@ -217,11 +217,7 @@ See 'cargo help <command>' for more information on a specific command.\n",
.multiple(true)
.global(true),
)
.arg(
opt("quiet", "No output printed to stdout")
.short("q")
.global(true),
)
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(
opt("color", "Coloring: auto, always, never")
.value_name("WHEN")
Expand All @@ -240,3 +236,4 @@ See 'cargo help <command>' for more information on a specific command.\n",
)
.subcommands(commands::builtin())
}

1 change: 1 addition & 0 deletions src/bin/cargo/commands/bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pub fn cli() -> App {
subcommand("bench")
.setting(AppSettings::TrailingVarArg)
.about("Execute all benchmarks of a local package")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(
Arg::with_name("BENCHNAME")
.help("If specified, only run benches containing this string in their names"),
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ pub fn cli() -> App {
// subcommand aliases are handled in aliased_command()
// .alias("b")
.about("Compile a local package and all of its dependencies")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_package_spec(
"Package to build (see `cargo help pkgid`)",
"Build all packages in the workspace",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ pub fn cli() -> App {
// subcommand aliases are handled in aliased_command()
// .alias("c")
.about("Check a local package and all of its dependencies for errors")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_package_spec(
"Package(s) to check",
"Check all packages in the workspace",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/clean.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops::{self, CleanOptions};
pub fn cli() -> App {
subcommand("clean")
.about("Remove artifacts that cargo has generated in the past")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_package_spec_simple("Package to clean artifacts for")
.arg_manifest_path()
.arg_target_triple("Target triple to clean output for")
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/doc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops::{self, DocOptions};
pub fn cli() -> App {
subcommand("doc")
.about("Build a package's documentation")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(opt(
"open",
"Opens the docs in a browser after the operation",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/fetch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use cargo::ops::FetchOptions;
pub fn cli() -> App {
subcommand("fetch")
.about("Fetch dependencies of a package from the network")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_manifest_path()
.arg_target_triple("Fetch dependencies for the target triple")
.after_help(
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/fix.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops::{self, CompileFilter, FilterRule, LibRule};
pub fn cli() -> App {
subcommand("fix")
.about("Automatically fix lint warnings reported by rustc")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_package_spec(
"Package(s) to fix",
"Fix all packages in the workspace",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/generate_lockfile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops;
pub fn cli() -> App {
subcommand("generate-lockfile")
.about("Generate the lockfile for a package")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_manifest_path()
}

Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/git_checkout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use cargo::util::ToUrl;
pub fn cli() -> App {
subcommand("git-checkout")
.about("Checkout a copy of a Git repository")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(
Arg::with_name("url")
.long("url")
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops;
pub fn cli() -> App {
subcommand("init")
.about("Create a new cargo package in an existing directory")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("path").default_value("."))
.arg(opt("registry", "Registry to use").value_name("REGISTRY"))
.arg_new_opts()
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use cargo::util::ToUrl;
pub fn cli() -> App {
subcommand("install")
.about("Install a Rust binary. Default location is $HOME/.cargo/bin")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("crate").empty_values(false).multiple(true))
.arg(
opt("version", "Specify a version to install from crates.io")
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/locate_project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use serde::Serialize;
pub fn cli() -> App {
subcommand("locate-project")
.about("Print a JSON representation of a Cargo.toml file's location")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_manifest_path()
}

Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/login.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ pub fn cli() -> App {
"Save an api token from the registry locally. \
If token is not specified, it will be read from stdin.",
)
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("token"))
.arg(
opt("host", "Host to set the token for")
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ pub fn cli() -> App {
the concrete used versions including overrides, \
in machine-readable format",
)
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_features()
.arg(opt(
"no-deps",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/new.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops;
pub fn cli() -> App {
subcommand("new")
.about("Create a new cargo package at <path>")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("path").required(true))
.arg(opt("registry", "Registry to use").value_name("REGISTRY"))
.arg_new_opts()
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/owner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops::{self, OwnersOptions};
pub fn cli() -> App {
subcommand("owner")
.about("Manage the owners of a crate on the registry")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("crate"))
.arg(multi_opt("add", "LOGIN", "Name of a user or team to invite as an owner").short("a"))
.arg(
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops::{self, PackageOpts};
pub fn cli() -> App {
subcommand("package")
.about("Assemble the local package into a distributable tarball")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(
opt(
"list",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/pkgid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops;
pub fn cli() -> App {
subcommand("pkgid")
.about("Print a fully qualified package specification")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("spec"))
.arg_package("Argument to get the package ID specifier for")
.arg_manifest_path()
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/publish.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops::{self, PublishOpts};
pub fn cli() -> App {
subcommand("publish")
.about("Upload a package to the registry")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_index()
.arg(opt("token", "Token to use when uploading").value_name("TOKEN"))
.arg(opt(
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/read_manifest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Print a JSON representation of a Cargo.toml manifest.
Deprecated, use `cargo metadata --no-deps` instead.\
",
)
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_manifest_path()
}

Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ pub fn cli() -> App {
// .alias("r")
.setting(AppSettings::TrailingVarArg)
.about("Run a binary or example of the local package")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("args").multiple(true))
.arg_targets_bin_example(
"Name of the bin target to run",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/rustc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pub fn cli() -> App {
subcommand("rustc")
.setting(AppSettings::TrailingVarArg)
.about("Compile a package and all of its dependencies")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("args").multiple(true))
.arg_package("Package to build")
.arg_jobs()
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/rustdoc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pub fn cli() -> App {
subcommand("rustdoc")
.setting(AppSettings::TrailingVarArg)
.about("Build a package's documentation, using specified custom flags.")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("args").multiple(true))
.arg(opt(
"open",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use cargo::ops;
pub fn cli() -> App {
subcommand("search")
.about("Search packages in crates.io")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("query").multiple(true))
.arg_index()
.arg(
Expand Down
4 changes: 4 additions & 0 deletions src/bin/cargo/commands/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ pub fn cli() -> App {
.multiple(true)
.last(true),
)
.arg(
opt("quiet", "Display one character per test instead of one line")
.short("q")
)
.arg_targets_all(
"Test only this package's library unit tests",
"Test only the specified binary",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/uninstall.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops;
pub fn cli() -> App {
subcommand("uninstall")
.about("Remove a Rust binary")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("spec").multiple(true))
.arg_package_spec_simple("Package to uninstall")
.arg(multi_opt("bin", "NAME", "Only uninstall the binary NAME"))
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/update.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops::{self, UpdateOptions};
pub fn cli() -> App {
subcommand("update")
.about("Update dependencies as recorded in the local lock file")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_package_spec_simple("Package to update")
.arg(opt(
"aggressive",
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/verify_project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use cargo::print_json;
pub fn cli() -> App {
subcommand("verify-project")
.about("Check correctness of crate manifest")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg_manifest_path()
}

Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use crate::cli;

pub fn cli() -> App {
subcommand("version").about("Show version information")
.arg(opt("quiet", "No output printed to stdout").short("q"))
}

pub fn exec(_config: &mut Config, args: &ArgMatches<'_>) -> CliResult {
Expand Down
1 change: 1 addition & 0 deletions src/bin/cargo/commands/yank.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use cargo::ops;
pub fn cli() -> App {
subcommand("yank")
.about("Remove a pushed crate from the index")
.arg(opt("quiet", "No output printed to stdout").short("q"))
.arg(Arg::with_name("crate"))
.arg(opt("vers", "The version to yank or un-yank").value_name("VERSION"))
.arg(opt(
Expand Down
4 changes: 2 additions & 2 deletions src/cargo/core/compiler/compilation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::path::PathBuf;
use semver::Version;

use super::BuildContext;
use crate::core::{Edition, Package, PackageId, Target, TargetKind};
use crate::core::{Edition, Package, PackageId, Target};
use crate::util::{self, join_paths, process, CargoResult, CfgExpr, Config, ProcessBuilder};

pub struct Doctest {
Expand All @@ -22,7 +22,7 @@ pub struct Doctest {
/// A structure returning the result of a compilation.
pub struct Compilation<'cfg> {
/// An array of all tests created during this compilation.
pub tests: Vec<(Package, TargetKind, String, PathBuf)>,
pub tests: Vec<(Package, Target, PathBuf)>,

/// An array of all binaries created.
pub binaries: Vec<PathBuf>,
Expand Down
3 changes: 1 addition & 2 deletions src/cargo/core/compiler/context/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
if unit.mode == CompileMode::Test {
self.compilation.tests.push((
unit.pkg.clone(),
unit.target.kind().clone(),
unit.target.name().to_string(),
unit.target.clone(),
output.path.clone(),
));
} else if unit.target.is_bin() || unit.target.is_bin_example() {
Expand Down
8 changes: 7 additions & 1 deletion src/cargo/ops/cargo_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use std::ffi::OsString;

use crate::core::compiler::{Compilation, Doctest};
use crate::core::Workspace;
use crate::core::shell::Verbosity;
use crate::ops;
use crate::util::errors::CargoResult;
use crate::util::{CargoTestError, ProcessError, Test};
Expand Down Expand Up @@ -83,10 +84,15 @@ fn run_unit_tests(

let mut errors = Vec::new();

for &(ref pkg, ref kind, ref test, ref exe) in &compilation.tests {
for &(ref pkg, ref target, ref exe) in &compilation.tests {
let kind = target.kind();
let test = target.name().to_string();
let exe_display = exe.strip_prefix(cwd).unwrap_or(exe).display();
let mut cmd = compilation.target_process(exe, pkg)?;
cmd.args(test_args);
if target.harness() && config.shell().verbosity() == Verbosity::Quiet {
cmd.arg("--quiet");
}
config
.shell()
.concise(|shell| shell.status("Running", &exe_display))?;
Expand Down
Loading

0 comments on commit d74d879

Please sign in to comment.