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