diff --git a/crates/cargo-wdk/Cargo.toml b/crates/cargo-wdk/Cargo.toml index a0a291c27..c55cea439 100644 --- a/crates/cargo-wdk/Cargo.toml +++ b/crates/cargo-wdk/Cargo.toml @@ -17,8 +17,6 @@ clap = { features = ["derive"], workspace = true } clap-cargo = { features = ["cargo_metadata"], workspace = true } clap-verbosity-flag.workspace = true include_dir.workspace = true -mockall.workspace = true -mockall_double.workspace = true serde_json.workspace = true thiserror.workspace = true tracing.workspace = true @@ -33,6 +31,8 @@ windows = { features = [ [dev-dependencies] assert_cmd.workspace = true assert_fs.workspace = true +mockall.workspace = true +mockall_double.workspace = true predicates.workspace = true regex.workspace = true sha2.workspace = true diff --git a/crates/cargo-wdk/src/actions/build/build_task.rs b/crates/cargo-wdk/src/actions/build/build_task.rs index a9937a3e0..9e2821e69 100644 --- a/crates/cargo-wdk/src/actions/build/build_task.rs +++ b/crates/cargo-wdk/src/actions/build/build_task.rs @@ -10,12 +10,13 @@ use std::path::{Path, PathBuf}; use anyhow::Result; use cargo_metadata::Message; use clap_cargo::Features; +#[cfg(test)] use mockall_double::double; use tracing::debug; use wdk_build::CpuArchitecture; use super::{Profile, error::BuildTaskError, features_to_cargo_args, to_target_triple}; -#[double] +#[cfg_attr(test, double)] use crate::providers::exec::CommandExec; use crate::{providers::error::CommandError, trace}; diff --git a/crates/cargo-wdk/src/actions/build/mod.rs b/crates/cargo-wdk/src/actions/build/mod.rs index 18e23484e..e17661526 100644 --- a/crates/cargo-wdk/src/actions/build/mod.rs +++ b/crates/cargo-wdk/src/actions/build/mod.rs @@ -24,6 +24,7 @@ use build_task::{BuildTask, BuildTaskParams}; use cargo_metadata::{CrateType, Message, Metadata as CargoMetadata, Package, TargetKind}; use clap_cargo::Features; use error::BuildActionError; +#[cfg(test)] use mockall_double::double; use package_task::{PackageTask, PackageTaskParams}; pub use package_task::{SignMode, TargetPlatform}; @@ -33,7 +34,7 @@ use wdk_build::{ metadata::{TryFromCargoMetadataError, Wdk}, }; -#[double] +#[cfg_attr(test, double)] use crate::providers::{exec::CommandExec, fs::Fs, metadata::Metadata, wdk_build::WdkBuild}; const X86_64_TARGET_TRIPLE_NAME: &str = "x86_64-pc-windows-msvc"; diff --git a/crates/cargo-wdk/src/actions/build/package_task.rs b/crates/cargo-wdk/src/actions/build/package_task.rs index 57036a5cb..61b0955d9 100644 --- a/crates/cargo-wdk/src/actions/build/package_task.rs +++ b/crates/cargo-wdk/src/actions/build/package_task.rs @@ -15,6 +15,7 @@ use std::{ result::Result, }; +#[cfg(test)] use mockall_double::double; use tracing::{debug, info, warn}; use wdk_build::{CpuArchitecture, DriverConfig}; @@ -26,7 +27,7 @@ use windows::{ core::{Error as WinError, PCSTR}, }; -#[double] +#[cfg_attr(test, double)] use crate::providers::{exec::CommandExec, fs::Fs, wdk_build::WdkBuild}; use crate::{actions::build::error::PackageTaskError, providers::error::FileError}; diff --git a/crates/cargo-wdk/src/actions/clean/mod.rs b/crates/cargo-wdk/src/actions/clean/mod.rs index 557690240..26b9ecddf 100644 --- a/crates/cargo-wdk/src/actions/clean/mod.rs +++ b/crates/cargo-wdk/src/actions/clean/mod.rs @@ -8,10 +8,11 @@ use std::path::{Path, PathBuf, absolute}; use anyhow::Result; use error::CleanActionError; +#[cfg(test)] use mockall_double::double; use tracing::{debug, error as err, info}; -#[double] +#[cfg_attr(test, double)] use crate::providers::{exec::CommandExec, fs::Fs}; use crate::trace; diff --git a/crates/cargo-wdk/src/actions/new/mod.rs b/crates/cargo-wdk/src/actions/new/mod.rs index c9f0a6025..3e8e7149f 100644 --- a/crates/cargo-wdk/src/actions/new/mod.rs +++ b/crates/cargo-wdk/src/actions/new/mod.rs @@ -17,10 +17,11 @@ use std::{ use clap_verbosity_flag::Verbosity; use error::NewActionError; use include_dir::{Dir, include_dir}; +#[cfg(test)] use mockall_double::double; use tracing::{debug, info}; -#[double] +#[cfg_attr(test, double)] use crate::providers::{exec::CommandExec, fs::Fs}; use crate::trace; diff --git a/crates/cargo-wdk/src/cli.rs b/crates/cargo-wdk/src/cli.rs index 030960089..fbf2d8d3d 100644 --- a/crates/cargo-wdk/src/cli.rs +++ b/crates/cargo-wdk/src/cli.rs @@ -9,6 +9,7 @@ use anyhow::Result; use clap::{ArgGroup, Args, CommandFactory, Parser, Subcommand, ValueEnum, error::ErrorKind}; use clap_cargo::Features; use clap_verbosity_flag::Verbosity; +#[cfg(test)] use mockall_double::double; use wdk_build::CpuArchitecture; @@ -17,7 +18,7 @@ use crate::actions::{ clean::CleanAction, new::{DriverType, KMDF_STR, NewAction, UMDF_STR, WDM_STR}, }; -#[double] +#[cfg_attr(test, double)] use crate::providers::{exec::CommandExec, fs::Fs, metadata::Metadata, wdk_build::WdkBuild}; const ABOUT_STRING: &str = "cargo-wdk is a cargo extension that can be used to create and build \ diff --git a/crates/cargo-wdk/src/providers/exec.rs b/crates/cargo-wdk/src/providers/exec.rs index 73ab73669..5828243eb 100644 --- a/crates/cargo-wdk/src/providers/exec.rs +++ b/crates/cargo-wdk/src/providers/exec.rs @@ -6,7 +6,7 @@ //! enables mocking the `CommandExec` struct for unit testing. // Suppression added for mockall as it generates mocks with env_vars: &Option -#![allow(clippy::ref_option_ref)] +#![cfg_attr(test, allow(clippy::ref_option_ref))] // Warns the run method is not used, however it is used. // The intellisense confusion seems to come from automock #![allow(dead_code)] @@ -19,6 +19,7 @@ use std::{ }; use anyhow::Result; +#[cfg(test)] use mockall::automock; use tracing::debug; @@ -28,7 +29,7 @@ use super::error::CommandError; #[derive(Debug, Default)] pub struct CommandExec {} -#[automock] +#[cfg_attr(test, automock)] impl CommandExec { // The `'a` lifetime is required by mockall's `#[automock]` to generate the // mock impl diff --git a/crates/cargo-wdk/src/providers/fs.rs b/crates/cargo-wdk/src/providers/fs.rs index 50aa4decb..6ade8afda 100644 --- a/crates/cargo-wdk/src/providers/fs.rs +++ b/crates/cargo-wdk/src/providers/fs.rs @@ -16,6 +16,7 @@ use std::{ path::{Path, PathBuf}, }; +#[cfg(test)] use mockall::automock; use super::error::FileError; @@ -37,7 +38,7 @@ pub struct DirEntryInfo { #[derive(Default)] pub struct Fs {} -#[automock] +#[cfg_attr(test, automock)] impl Fs { pub fn copy(&self, src: &Path, dest: &Path) -> Result { copy(src, dest).map_err(|e| FileError::CopyError(src.to_owned(), dest.to_owned(), e)) diff --git a/crates/cargo-wdk/src/providers/metadata.rs b/crates/cargo-wdk/src/providers/metadata.rs index 50354093c..672f4fb31 100644 --- a/crates/cargo-wdk/src/providers/metadata.rs +++ b/crates/cargo-wdk/src/providers/metadata.rs @@ -13,12 +13,13 @@ use std::path::Path; use clap_cargo::Features; +#[cfg(test)] use mockall::automock; #[derive(Default)] pub struct Metadata {} -#[automock] +#[cfg_attr(test, automock)] impl Metadata { /// Get the Cargo metadata at a given path. /// diff --git a/crates/cargo-wdk/src/providers/wdk_build.rs b/crates/cargo-wdk/src/providers/wdk_build.rs index f958092b7..091adfff4 100644 --- a/crates/cargo-wdk/src/providers/wdk_build.rs +++ b/crates/cargo-wdk/src/providers/wdk_build.rs @@ -9,13 +9,14 @@ // The intellisense confusion seems to come from automock #![allow(dead_code)] #![allow(clippy::unused_self)] +#[cfg(test)] use mockall::automock; /// Provides limited access to wdk-build crate methods #[derive(Default)] pub struct WdkBuild {} -#[automock] +#[cfg_attr(test, automock)] impl WdkBuild { pub fn detect_wdk_build_number(&self) -> Result { wdk_build::detect_wdk_build_number()