File tree 2 files changed +43
-21
lines changed
src/cargo/core/compiler/fingerprint
2 files changed +43
-21
lines changed Original file line number Diff line number Diff line change @@ -775,13 +775,26 @@ impl LocalFingerprint {
775
775
key : K ,
776
776
envs : & BTreeMap < String , Option < OsString > > ,
777
777
) -> LocalFingerprint {
778
- let key = key. as_ref ( ) ;
778
+ fn get_env_value ( key : & str , envs : & BTreeMap < String , Option < OsString > > ) -> Option < OsString > {
779
+ if cfg ! ( windows) {
780
+ let upper_case_key: String = key. to_uppercase ( ) ;
781
+ for ( k, v) in envs {
782
+ if k. to_uppercase ( ) . eq ( & upper_case_key) {
783
+ return v. to_owned ( ) ;
784
+ }
785
+ }
786
+ }
787
+ env:: var_os ( key)
788
+ }
789
+
790
+ let key: & str = key. as_ref ( ) ;
779
791
let var = key. to_owned ( ) ;
780
- let val = envs
781
- . get ( key)
782
- . map ( |v| v. to_owned ( ) )
783
- . or_else ( || Some ( env:: var_os ( key) ) )
784
- . and_then ( |os_str| os_str?. into_string ( ) . ok ( ) ) ;
792
+
793
+ let val: Option < String > = match envs. get ( key) {
794
+ Some ( v) => v. to_owned ( ) ,
795
+ None => get_env_value ( key, envs) ,
796
+ }
797
+ . and_then ( |os_str| os_str. into_string ( ) . ok ( ) ) ;
785
798
786
799
LocalFingerprint :: RerunIfEnvChanged { var, val }
787
800
}
Original file line number Diff line number Diff line change @@ -7,6 +7,26 @@ use cargo_test_support::str;
7
7
8
8
#[ cargo_test]
9
9
fn rerun_if_env_changes_config ( ) {
10
+ let build = if cfg ! ( windows) {
11
+ r#"
12
+ fn main() {
13
+ println!("cargo:rerun-if-env-changed=fOO");
14
+ if let Ok(foo) = std::env::var("Foo") {
15
+ assert!(&foo != "bad");
16
+ }
17
+ }
18
+ "#
19
+ } else {
20
+ r#"
21
+ fn main() {
22
+ println!("cargo:rerun-if-env-changed=FOO");
23
+ if let Ok(foo) = std::env::var("FOO") {
24
+ assert!(&foo != "bad");
25
+ }
26
+ }
27
+ "#
28
+ } ;
29
+
10
30
let p = project ( )
11
31
. file ( "Cargo.toml" , & basic_manifest ( "foo" , "0.1.0" ) )
12
32
. file ( "src/main.rs" , "fn main() {}" )
@@ -17,17 +37,7 @@ fn rerun_if_env_changes_config() {
17
37
FOO = "good"
18
38
"# ,
19
39
)
20
- . file (
21
- "build.rs" ,
22
- r#"
23
- fn main() {
24
- println!("cargo:rerun-if-env-changed=FOO");
25
- if let Ok(foo) = std::env::var("FOO") {
26
- assert!(&foo != "bad");
27
- }
28
- }
29
- "# ,
30
- )
40
+ . file ( "build.rs" , build)
31
41
. build ( ) ;
32
42
33
43
p. cargo ( "check" )
@@ -48,12 +58,11 @@ fn rerun_if_env_changes_config() {
48
58
49
59
p. cargo ( "check" )
50
60
. with_status ( 101 )
51
- . with_stderr_data (
52
- "\
61
+ . with_stderr_data ( str![ [ r#"
53
62
[COMPILING] foo v0.1.0 ([ROOT]/foo)
54
63
[ERROR] failed to run custom build command for `foo v0.1.0 ([ROOT]/foo)`
55
- ..." ,
56
- )
64
+ ...
65
+ "# ] ] )
57
66
. run ( ) ;
58
67
}
59
68
You can’t perform that action at this time.
0 commit comments