Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
595097b
feat: use STAMPINF_VERSION for stamping DriverVer when available
krishnakumar4a4 Sep 29, 2025
a6b6693
feat: introduce allow_stampinf_version_env_override cfg and make Driv…
krishnakumar4a4 Sep 29, 2025
a958433
test: add parameterized test for run_stampinf with env overrides
krishnakumar4a4 Sep 29, 2025
0e67838
refactor: improve comments and formatting in run_stampinf function an…
krishnakumar4a4 Sep 30, 2025
d952b48
refactor: update package name and working directory in run_stampinf test
krishnakumar4a4 Sep 30, 2025
2355f0d
style: format check-cfg section for better readability in Cargo.toml
krishnakumar4a4 Sep 30, 2025
0c8e516
Update crates/cargo-wdk/src/actions/build/package_task.rs
krishnakumar4a4 Oct 1, 2025
e5edc09
Update crates/cargo-wdk/src/actions/build/package_task.rs
krishnakumar4a4 Oct 1, 2025
bf82cd6
feat: add cfg-if dependency and refactor run_stampinf for improved cf…
krishnakumar4a4 Oct 1, 2025
a0e8e08
fix: improve STAMPINF_VERSION handling and update target directory in…
krishnakumar4a4 Oct 1, 2025
f366e22
test: rename and enhance run_stampinf test for clarity and environmen…
krishnakumar4a4 Oct 1, 2025
affb3ee
refactor: remove cfg-if dependency and streamline STAMPINF_VERSION ha…
krishnakumar4a4 Oct 6, 2025
aa9872f
test: refactor stampinf_version_overrides_with_env_var test and add w…
krishnakumar4a4 Oct 6, 2025
a45f04c
refactor(tests): reorganize imports for clarity and consistency in pa…
krishnakumar4a4 Oct 6, 2025
5ee5782
feat(tests): add regex dependency and enhance driver build tests with…
krishnakumar4a4 Oct 6, 2025
bea38ff
Merge branch 'main' into 436-support-stampinf-version-override
krishnakumar4a4 Oct 6, 2025
9fba0d6
refactor(tests): enhance with_file_lock to support environment variab…
krishnakumar4a4 Oct 6, 2025
b121954
refactor(tests): improve test setup by adding clean command execution…
krishnakumar4a4 Oct 6, 2025
4cc71ef
refactor(tests): replace run_clean_cmd with run_cargo_clean for consi…
krishnakumar4a4 Oct 7, 2025
88e8c44
Merge branch 'main' into 436-support-stampinf-version-override
krishnakumar4a4 Oct 7, 2025
9afb175
refactor(tests): remove cleanup code for STAMPINF_VERSION environment…
krishnakumar4a4 Oct 7, 2025
3cb6427
refactor(tests): simplify assert_driver_ver by improving line search …
krishnakumar4a4 Oct 7, 2025
df7726b
refactor: improve INF file reading in assert_driver_ver to handle UTF…
krishnakumar4a4 Oct 7, 2025
47607c2
refactor(tests): streamline environment variable handling in test cases
krishnakumar4a4 Oct 7, 2025
b946542
Merge branch 'main' into 436-support-stampinf-version-override
krishnakumar4a4 Oct 8, 2025
1a1e6cf
Merge branch 'main' into 436-support-stampinf-version-override
krishnakumar4a4 Oct 8, 2025
13f48fa
Refactor build tests to reduce duplication and improve readability
krishnakumar4a4 Oct 8, 2025
a3fcbf9
refactor(tests): simplify build action expectations by introducing de…
krishnakumar4a4 Oct 8, 2025
f111a15
refactor: remove TestSetupPackageExpectations trait
krishnakumar4a4 Oct 8, 2025
f27b56a
refactor: improve logging and regex handling for DriverVer in packagi…
krishnakumar4a4 Oct 8, 2025
359c9ae
refactor: organize imports for improved readability in build tests
krishnakumar4a4 Oct 8, 2025
5546bb2
refactor: simplify regex handling for driver version in assert_driver…
krishnakumar4a4 Oct 8, 2025
b9f4e56
refactor: improve comments for clarity in packaging and driver versio…
krishnakumar4a4 Oct 9, 2025
7e9942d
Merge branch 'main' into 436-support-stampinf-version-override
krishnakumar4a4 Oct 9, 2025
8b37bce
refactor: streamline file lock usage and enhance environment variable…
krishnakumar4a4 Oct 9, 2025
9b8d022
refactor: replace common module with _test_utils for test utility fun…
krishnakumar4a4 Oct 9, 2025
246949a
refactor: replace _test_utils module with test_utils for consistency …
krishnakumar4a4 Oct 10, 2025
1ca8dc3
refactor: update dead code allowance for with_env function to clarify…
krishnakumar4a4 Oct 10, 2025
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
1 change: 1 addition & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ rustflags = [

# Unstable cfg options:
# "--cfg", "skip_umdf_static_crt_check",
# "--cfg", "allow_stampinf_version_env_override"
]
7 changes: 7 additions & 0 deletions crates/cargo-wdk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ sha2.workspace = true
missing_docs = "warn"
unsafe_op_in_unsafe_fn = "forbid"

[lints.rust.unexpected_cfgs]
level = "warn"
check-cfg = [
"cfg(wdk_build_unstable)",
"cfg(allow_stampinf_version_env_override)",
]

[lints.clippy]
# Lint Groups
all = "deny"
Expand Down
99 changes: 97 additions & 2 deletions crates/cargo-wdk/src/actions/build/package_task.rs
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,31 @@ impl<'a> PackageTask<'a> {
&arch,
"-c",
&cat_file_path,
"-v",
"*",
];

// DriverVer handling:
// 1. When BOTH cfg flags (wdk_build_unstable +
// allow_stampinf_version_env_override) are enabled, allow an external
// override via STAMPINF_VERSION env var. If the env var is absent we fall
// back to auto-generation (-v *).
// 2. Otherwise (stable / default builds) always request auto-generation (-v *).
#[cfg(all(wdk_build_unstable, allow_stampinf_version_env_override))]
{
if let Ok(version) = std::env::var("STAMPINF_VERSION") {
// When STAMPINF_VERSION is set we intentionally omit -v so stampinf reads it
// and populates DriverVer.
info!("Using STAMPINF_VERSION env var to set DriverVer: {version}");
} else {
args.push("-v");
args.push("*");
}
}
#[cfg(not(all(wdk_build_unstable, allow_stampinf_version_env_override)))]
{
args.push("-v");
args.push("*");
}

if !wdf_version_flags.is_empty() {
args.append(&mut wdf_version_flags.iter().map(String::as_str).collect());
}
Expand Down Expand Up @@ -631,4 +653,77 @@ mod tests {

PackageTask::new(package_task_params, &wdk_build, &command_exec, &fs);
}

// Parameterized test for run_stampinf covering env present/absent.
// Compile-time cfgs determine expectation via cfg! so a single test body
// suffices.
#[test]
fn run_stampinf_parameterized_env_overrides() {
use std::process::{ExitStatus, Output};

let scenarios = [("env_set", Some("1.2.3.4")), ("env_unset", None)];

let both_cfgs = cfg!(all(wdk_build_unstable, allow_stampinf_version_env_override));

for (name, env_val) in scenarios {
if let Some(v) = env_val {
std::env::set_var("STAMPINF_VERSION", v);
} else {
std::env::remove_var("STAMPINF_VERSION");
}

let package_name = "driver"; // reuse
let working_dir = PathBuf::from("C:/abs/driver");
let target_dir = PathBuf::from("C:/abs/target/debug");
let arch = CpuArchitecture::Amd64;

let params = PackageTaskParams {
package_name,
working_dir: &working_dir,
target_dir: &target_dir,
target_arch: &arch,
driver_model: DriverConfig::Kmdf(KmdfConfig::default()),
sample_class: false,
verify_signature: false,
};

let wdk_build = WdkBuild::default();
let fs = Fs::default();
let mut command_exec = CommandExec::default();

let expect_skip_v = env_val.is_some() && both_cfgs; // skip -v only in override path

command_exec
.expect_run()
.withf(move |cmd: &str, args: &[&str], _, _| {
if cmd != "stampinf" {
return false;
}
let has_v = args.contains(&"-v");
if expect_skip_v {
!has_v
} else {
args.windows(2).any(|w| w == ["-v", "*"])
}
})
.once()
.return_once(|_, _, _, _| {
Ok(Output {
status: ExitStatus::default(),
stdout: vec![],
stderr: vec![],
})
});

let task = PackageTask::new(params, &wdk_build, &command_exec, &fs);
let result = task.run_stampinf();
assert!(
result.is_ok(),
"scenario {name} failed (cfgs_override_enabled={both_cfgs}, env_set={env_val:?})"
);
}

// Cleanup
std::env::remove_var("STAMPINF_VERSION");
}
}
Loading