Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add --quiet option for cargo test #6358

Merged
merged 5 commits into from
Mar 11, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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};
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 @@ -80,10 +81,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