@@ -677,6 +677,7 @@ mod tests {
677677 os:: windows:: process:: ExitStatusExt ,
678678 path:: PathBuf ,
679679 process:: { ExitStatus , Output } ,
680+ sync:: Mutex ,
680681 } ;
681682
682683 use mockall:: predicate:: eq;
@@ -690,6 +691,14 @@ mod tests {
690691 wdk_build:: MockWdkBuild ,
691692 } ;
692693
694+ // Serializes test execution within this module. The
695+ // `stampinf_version_overrides_with_env_var` test mutates the
696+ // `STAMPINF_VERSION` env var via `with_env`, which is process-global state.
697+ // Other tests that call `run_stampinf()` read the same env var, so parallel
698+ // execution causes non-deterministic failures when the env var is
699+ // unexpectedly set.
700+ static TEST_MUTEX : Mutex < ( ) > = Mutex :: new ( ( ) ) ;
701+
693702 #[ test]
694703 fn new_succeeds_for_valid_args ( ) {
695704 let package_name = "test_package" ;
@@ -816,6 +825,7 @@ mod tests {
816825
817826 #[ test]
818827 fn run_packages_driver_with_expected_operations ( ) {
828+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
819829 let mut harness = PackageTaskHarness :: new ( ) ;
820830 let paths = harness. paths ( ) ;
821831
@@ -866,6 +876,7 @@ mod tests {
866876
867877 #[ test]
868878 fn run_verifies_signatures_when_enabled ( ) {
879+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
869880 let mut harness = PackageTaskHarness :: new ( ) . with_sign_mode ( SignMode :: Test {
870881 verify_signature : true ,
871882 } ) ;
@@ -887,6 +898,7 @@ mod tests {
887898
888899 #[ test]
889900 fn run_exports_certificate_from_store_when_it_already_exists ( ) {
901+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
890902 let mut harness = PackageTaskHarness :: new ( ) ;
891903 let paths = harness. paths ( ) ;
892904
@@ -935,6 +947,7 @@ mod tests {
935947
936948 #[ test]
937949 fn run_returns_error_when_inx_file_is_missing ( ) {
950+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
938951 let mut harness = PackageTaskHarness :: new ( ) ;
939952 let paths = harness. paths ( ) ;
940953 harness. expect_exists ( paths. src_inx_file_path . clone ( ) , false ) ;
@@ -951,6 +964,7 @@ mod tests {
951964
952965 #[ test]
953966 fn run_returns_error_when_copying_driver_binary_fails ( ) {
967+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
954968 let mut harness = PackageTaskHarness :: new ( ) ;
955969 let paths = harness. paths ( ) ;
956970
@@ -985,6 +999,7 @@ mod tests {
985999
9861000 #[ test]
9871001 fn run_returns_error_when_stampinf_fails ( ) {
1002+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
9881003 let mut harness = PackageTaskHarness :: new ( ) ;
9891004 let paths = harness. paths ( ) ;
9901005
@@ -1022,6 +1037,7 @@ mod tests {
10221037
10231038 #[ test]
10241039 fn run_returns_error_when_inf2cat_fails ( ) {
1040+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
10251041 let mut harness = PackageTaskHarness :: new ( ) ;
10261042 let paths = harness. paths ( ) ;
10271043
@@ -1060,6 +1076,7 @@ mod tests {
10601076
10611077 #[ test]
10621078 fn run_skips_infverif_for_samples_when_wdk_build_is_in_bugged_range ( ) {
1079+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
10631080 let mut harness = PackageTaskHarness :: new ( ) . with_sample_class ( true ) ;
10641081 let paths = harness. paths ( ) ;
10651082
@@ -1109,6 +1126,7 @@ mod tests {
11091126
11101127 #[ test]
11111128 fn stampinf_version_overrides_with_env_var ( ) {
1129+ let _lock = TEST_MUTEX . lock ( ) . unwrap ( ) ;
11121130 // verify both with and without the env var set scenarios
11131131 let scenarios = [
11141132 ( "env_set" , Some ( "1.2.3.4" ) , true ) ,
0 commit comments