@@ -383,3 +383,148 @@ fn rustc_cfg_with_and_without_value() {
383
383
) ;
384
384
check. run ( ) ;
385
385
}
386
+
387
+ #[ cargo_test]
388
+ fn env_config_rerun_if_changed ( ) {
389
+ let p = project ( )
390
+ . file ( "src/main.rs" , "fn main() {}" )
391
+ . file (
392
+ "build.rs" ,
393
+ r#"
394
+ fn main() {
395
+ println!("cargo::rerun-if-env-changed=FOO");
396
+ }
397
+ "# ,
398
+ )
399
+ . file (
400
+ ".cargo/config.toml" ,
401
+ r#"
402
+ [env]
403
+ FOO = "foo"
404
+ "# ,
405
+ )
406
+ . build ( ) ;
407
+
408
+ p. cargo ( "check" )
409
+ . with_stderr_data ( str![ [ r#"
410
+ [COMPILING] foo v0.0.1 ([ROOT]/foo)
411
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
412
+
413
+ "# ] ] )
414
+ . run ( ) ;
415
+
416
+ p. change_file (
417
+ ".cargo/config.toml" ,
418
+ r#"
419
+ [env]
420
+ FOO = "bar"
421
+ "# ,
422
+ ) ;
423
+ p. cargo ( "check" )
424
+ . with_stderr_data ( str![ [ r#"
425
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
426
+
427
+ "# ] ] )
428
+ . run ( ) ;
429
+ // This identical cargo invocation is to ensure no rebuild happen.
430
+ p. cargo ( "check" )
431
+ . with_stderr_data ( str![ [ r#"
432
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
433
+
434
+ "# ] ] )
435
+ . run ( ) ;
436
+ }
437
+
438
+ #[ cfg( windows) ]
439
+ #[ cargo_test]
440
+ fn insensitive_env_config_rerun_if_changed ( ) {
441
+ let p = project ( )
442
+ . file ( "src/main.rs" , "fn main() {}" )
443
+ . file (
444
+ "build.rs" ,
445
+ r#"
446
+ fn main() {
447
+ println!("cargo::rerun-if-env-changed=FOO");
448
+ }
449
+ "# ,
450
+ )
451
+ . file (
452
+ ".cargo/config.toml" ,
453
+ r#"
454
+ [env]
455
+ Foo = "foo"
456
+ "# ,
457
+ )
458
+ . build ( ) ;
459
+
460
+ p. cargo ( "check" )
461
+ . with_stderr_data ( str![ [ r#"
462
+ [COMPILING] foo v0.0.1 ([ROOT]/foo)
463
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
464
+
465
+ "# ] ] )
466
+ . run ( ) ;
467
+ p. change_file (
468
+ ".cargo/config.toml" ,
469
+ r#"
470
+ [env]
471
+ Foo = "bar"
472
+ "# ,
473
+ ) ;
474
+ p. cargo ( "check" )
475
+ . with_stderr_data ( str![ [ r#"
476
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
477
+
478
+ "# ] ] )
479
+ . run ( ) ;
480
+ // This identical cargo invocation is to ensure no rebuild happen.
481
+ p. cargo ( "check" )
482
+ . with_stderr_data ( str![ [ r#"
483
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
484
+
485
+ "# ] ] )
486
+ . run ( ) ;
487
+ }
488
+
489
+ #[ cargo_test]
490
+ fn env_config_newly_added_rerun ( ) {
491
+ let p = project ( )
492
+ . file ( "src/main.rs" , "fn main() {}" )
493
+ . file (
494
+ "build.rs" ,
495
+ r#"
496
+ fn main() {
497
+ println!("cargo::rerun-if-env-changed=FOO");
498
+ }
499
+ "# ,
500
+ )
501
+ . build ( ) ;
502
+
503
+ p. cargo ( "check" )
504
+ . with_stderr_data ( str![ [ r#"
505
+ [COMPILING] foo v0.0.1 ([ROOT]/foo)
506
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
507
+
508
+ "# ] ] )
509
+ . run ( ) ;
510
+ p. change_file (
511
+ ".cargo/config.toml" ,
512
+ r#"
513
+ [env]
514
+ FOO = "foo"
515
+ "# ,
516
+ ) ;
517
+ p. cargo ( "check" )
518
+ . with_stderr_data ( str![ [ r#"
519
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
520
+
521
+ "# ] ] )
522
+ . run ( ) ;
523
+ // This identical cargo invocation is to ensure no rebuild happen.
524
+ p. cargo ( "check" )
525
+ . with_stderr_data ( str![ [ r#"
526
+ [FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
527
+
528
+ "# ] ] )
529
+ . run ( ) ;
530
+ }
0 commit comments