diff --git a/Cargo.lock b/Cargo.lock index b60436dc..027e2ece 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -915,9 +915,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -925,9 +925,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" @@ -942,9 +942,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" @@ -976,21 +976,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", diff --git a/crates/cargo-codspeed/src/app.rs b/crates/cargo-codspeed/src/app.rs index d2c9cda4..c79286b6 100644 --- a/crates/cargo-codspeed/src/app.rs +++ b/crates/cargo-codspeed/src/app.rs @@ -14,8 +14,6 @@ struct Cli { /// The measurement tool to use for measuring performance. /// Automatically set to `walltime` on macro runners - // This is an Option even if MeasurementMode has a default because - // the default is dynamic and this would mislead the user #[arg(short, long, global = true, env = "CODSPEED_RUNNER_MODE")] measurement_mode: Option, diff --git a/crates/cargo-codspeed/src/build.rs b/crates/cargo-codspeed/src/build.rs index c01a2530..b306f5d9 100644 --- a/crates/cargo-codspeed/src/build.rs +++ b/crates/cargo-codspeed/src/build.rs @@ -174,7 +174,7 @@ pub fn build_benches( ); } - let codspeed_target_dir = get_codspeed_target_dir(metadata); + let codspeed_target_dir = get_codspeed_target_dir(metadata, measurement_mode); let built_bench_count = built_benches.len(); // Create and clear packages codspeed target directories diff --git a/crates/cargo-codspeed/src/helpers.rs b/crates/cargo-codspeed/src/helpers.rs index 63f739c4..10d3bc9b 100644 --- a/crates/cargo-codspeed/src/helpers.rs +++ b/crates/cargo-codspeed/src/helpers.rs @@ -1,9 +1,13 @@ -use crate::prelude::*; +use crate::{measurement_mode::MeasurementMode, prelude::*}; use cargo_metadata::Metadata; use std::path::{Path, PathBuf}; -pub fn get_codspeed_target_dir(metadata: &Metadata) -> PathBuf { - metadata.target_directory.join("codspeed").into() +pub fn get_codspeed_target_dir(metadata: &Metadata, measurement_mode: MeasurementMode) -> PathBuf { + metadata + .target_directory + .join("codspeed") + .join(measurement_mode.to_string()) + .into() } pub fn clear_dir

(dir: P) -> Result<()> diff --git a/crates/cargo-codspeed/src/measurement_mode.rs b/crates/cargo-codspeed/src/measurement_mode.rs index 7170a9a2..3416adeb 100644 --- a/crates/cargo-codspeed/src/measurement_mode.rs +++ b/crates/cargo-codspeed/src/measurement_mode.rs @@ -1,20 +1,24 @@ use clap::ValueEnum; use serde::Serialize; -use std::env; +use std::fmt; -#[derive(Debug, Clone, ValueEnum, Serialize, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, ValueEnum, Serialize, PartialEq, Eq, Default)] #[serde(rename_all = "lowercase")] pub enum MeasurementMode { - Walltime, + #[default] Instrumentation, + Walltime, } -impl Default for MeasurementMode { - fn default() -> Self { - if env::var("CODSPEED_ENV").is_ok() { - MeasurementMode::Instrumentation - } else { - MeasurementMode::Walltime - } +impl fmt::Display for MeasurementMode { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "{}", + match self { + MeasurementMode::Instrumentation => "instrumentation", + MeasurementMode::Walltime => "walltime", + } + ) } } diff --git a/crates/cargo-codspeed/src/run.rs b/crates/cargo-codspeed/src/run.rs index 0d9c3946..2aa36330 100644 --- a/crates/cargo-codspeed/src/run.rs +++ b/crates/cargo-codspeed/src/run.rs @@ -99,7 +99,7 @@ pub fn run_benches( filters: Filters, measurement_mode: MeasurementMode, ) -> Result<()> { - let codspeed_target_dir = get_codspeed_target_dir(metadata); + let codspeed_target_dir = get_codspeed_target_dir(metadata, measurement_mode); let workspace_root = metadata.workspace_root.as_std_path(); if measurement_mode == MeasurementMode::Walltime { clear_raw_walltime_data(workspace_root)?; diff --git a/crates/codspeed/src/walltime.rs b/crates/codspeed/src/walltime.rs index 7be00fb4..aa996411 100644 --- a/crates/codspeed/src/walltime.rs +++ b/crates/codspeed/src/walltime.rs @@ -65,6 +65,8 @@ pub fn collect_raw_walltime_results( data.dump_to_results(&workspace_root, scope); } +// FIXME: This assumes that the cargo target dir is `target`, and duplicates information with +// `cargo-codspeed::helpers::get_codspeed_target_dir` pub fn get_raw_result_dir_from_workspace_root(workspace_root: &Path) -> PathBuf { workspace_root .join("target")