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 support for benchmarking all members of a workspace with "bench --all" #3988

Merged
merged 2 commits into from
May 2, 2017
Merged
Changes from 1 commit
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
Next Next commit
Add support for benchmarking all members of a workspace with "bench -…
…-all"

Same behaviour as "build --all" and others.
  • Loading branch information
sdroege committed May 2, 2017
commit c8f08b13a40c7e5090ba078b52cc98dc5d444b82
16 changes: 14 additions & 2 deletions src/bin/bench.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use cargo::core::Workspace;
use cargo::ops::{self, MessageFormat};
use cargo::ops::{self, MessageFormat, Packages};
use cargo::util::{CliResult, CliError, Human, Config, human};
use cargo::util::important_paths::{find_root_manifest_for_wd};

Expand Down Expand Up @@ -29,6 +29,7 @@ pub struct Options {
flag_frozen: bool,
flag_locked: bool,
arg_args: Vec<String>,
flag_all: bool,
}

pub const USAGE: &'static str = "
Expand All @@ -50,6 +51,7 @@ Options:
--benches Benchmark all benches
--no-run Compile, but don't run benchmarks
-p SPEC, --package SPEC ... Package to run benchmarks for
--all Benchmark all packages in the workspace
-j N, --jobs N Number of parallel jobs, defaults to # of CPUs
--features FEATURES Space-separated list of features to also build
--all-features Build all available features
Expand All @@ -72,6 +74,9 @@ which indicates which package should be benchmarked. If it is not given, then
the current package is benchmarked. For more information on SPEC and its format,
see the `cargo help pkgid` command.

All packages in the workspace are benchmarked if the `--all` flag is supplied. The
`--all` flag may be supplied in the presence of a virtual manifest.

The --jobs argument affects the building of the benchmark executable but does
not affect how many jobs are used when running the benchmarks.

Expand All @@ -80,6 +85,13 @@ Compilation can be customized with the `bench` profile in the manifest.

pub fn execute(options: Options, config: &Config) -> CliResult {
let root = find_root_manifest_for_wd(options.flag_manifest_path, config.cwd())?;

let spec = if options.flag_all {
Packages::All
} else {
Packages::Packages(&options.flag_package)
};

config.configure(options.flag_verbose,
options.flag_quiet,
&options.flag_color,
Expand All @@ -96,7 +108,7 @@ pub fn execute(options: Options, config: &Config) -> CliResult {
features: &options.flag_features,
all_features: options.flag_all_features,
no_default_features: options.flag_no_default_features,
spec: ops::Packages::Packages(&options.flag_package),
spec: spec,
release: true,
mode: ops::CompileMode::Bench,
filter: ops::CompileFilter::new(options.flag_lib,
Expand Down