@@ -2484,132 +2484,50 @@ fn two_at_rev_instead_of_tag() {
2484
2484
}
2485
2485
2486
2486
#[ test]
2487
- #[ ignore] // accesses crates.io
2488
2487
fn include_overrides_gitignore ( ) {
2489
- let p = git:: new ( "reduction" , |repo| {
2488
+ // Make sure that `package.include` takes precedence over .gitignore.
2489
+ let p = git:: new ( "foo" , |repo| {
2490
2490
repo. file (
2491
2491
"Cargo.toml" ,
2492
2492
r#"
2493
2493
[package]
2494
- name = "reduction "
2494
+ name = "foo "
2495
2495
version = "0.5.0"
2496
- authors = ["pnkfelix"]
2497
- build = "tango-build.rs"
2498
- include = ["src/lib.rs", "src/incl.rs", "src/mod.md", "tango-build.rs", "Cargo.toml"]
2499
-
2500
- [build-dependencies]
2501
- filetime = "0.1"
2496
+ include = ["src/lib.rs", "ignored.txt", "Cargo.toml"]
2502
2497
"# ,
2503
2498
)
2504
2499
. file (
2505
2500
".gitignore" ,
2506
2501
r#"
2507
- target
2502
+ / target
2508
2503
Cargo.lock
2509
- # Below files represent generated code, thus not managed by `git`
2510
- src/incl.rs
2511
- src/not_incl.rs
2512
- "# ,
2513
- )
2514
- . file (
2515
- "tango-build.rs" ,
2516
- r#"
2517
- extern crate filetime;
2518
- use filetime::FileTime;
2519
- use std::fs::{self, File};
2520
-
2521
- fn main() {
2522
- // generate files, or bring their timestamps into sync.
2523
- let source = "src/mod.md";
2524
-
2525
- let metadata = fs::metadata(source).unwrap();
2526
- let mtime = FileTime::from_last_modification_time(&metadata);
2527
- let atime = FileTime::from_last_access_time(&metadata);
2528
-
2529
- // sync time stamps for generated files with time stamp of source file.
2530
-
2531
- let files = ["src/not_incl.rs", "src/incl.rs"];
2532
- for file in files.iter() {
2533
- File::create(file).unwrap();
2534
- filetime::set_file_times(file, atime, mtime).unwrap();
2535
- }
2536
- }
2537
- "# ,
2538
- )
2539
- . file ( "src/lib.rs" , "mod not_incl; mod incl;" )
2540
- . file (
2541
- "src/mod.md" ,
2542
- r#"
2543
- (The content of this file does not matter since we are not doing real codegen.)
2504
+ ignored.txt
2544
2505
"# ,
2545
2506
)
2507
+ . file ( "src/lib.rs" , "" )
2508
+ . file ( "ignored.txt" , "" )
2509
+ . file ( "build.rs" , "fn main() {}" )
2546
2510
} )
2547
2511
. unwrap ( ) ;
2548
2512
2549
- println ! ( "build 1: all is new" ) ;
2550
- p. cargo ( "build -v" )
2551
- . with_stderr (
2552
- "\
2553
- [UPDATING] `[..]` index
2554
- [DOWNLOADED] filetime [..]
2555
- [DOWNLOADED] libc [..]
2556
- [COMPILING] libc [..]
2557
- [RUNNING] `rustc --crate-name libc [..]`
2558
- [COMPILING] filetime [..]
2559
- [RUNNING] `rustc --crate-name filetime [..]`
2560
- [COMPILING] reduction [..]
2561
- [RUNNING] `rustc --crate-name build_script_tango_build tango-build.rs --crate-type bin [..]`
2562
- [RUNNING] `[..]/build-script-tango-build`
2563
- [RUNNING] `rustc --crate-name reduction src/lib.rs --crate-type lib [..]`
2564
- [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
2565
- " ,
2566
- )
2567
- . run ( ) ;
2568
-
2569
- println ! ( "build 2: nothing changed; file timestamps reset by build script" ) ;
2570
- p. cargo ( "build -v" )
2571
- . with_stderr (
2572
- "\
2573
- [FRESH] libc [..]
2574
- [FRESH] filetime [..]
2575
- [FRESH] reduction [..]
2576
- [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
2577
- " ,
2578
- )
2579
- . run ( ) ;
2580
-
2581
- println ! ( "build 3: touch `src/not_incl.rs`; expect build script **not** re-run" ) ;
2582
- sleep_ms ( 1000 ) ;
2583
- File :: create ( p. root ( ) . join ( "src" ) . join ( "not_incl.rs" ) ) . unwrap ( ) ;
2584
-
2513
+ p. cargo ( "build" ) . run ( ) ;
2514
+ p. change_file ( "ignored.txt" , "Trigger rebuild." ) ;
2585
2515
p. cargo ( "build -v" )
2586
2516
. with_stderr (
2587
2517
"\
2588
- [FRESH] libc [..]
2589
- [FRESH] filetime [..]
2590
- [COMPILING] reduction [..]
2591
- [RUNNING] `rustc --crate-name reduction src/lib.rs --crate-type lib [..]`
2518
+ [COMPILING] foo v0.5.0 ([..])
2519
+ [RUNNING] `[..]build-script-build[..]`
2520
+ [RUNNING] `rustc --crate-name foo src/lib.rs [..]`
2592
2521
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
2593
2522
" ,
2594
2523
)
2595
2524
. run ( ) ;
2596
-
2597
- // This final case models the bug from rust-lang/cargo#4135: an
2598
- // explicitly included file should cause a build-script re-run,
2599
- // even if that same file is matched by `.gitignore`.
2600
- println ! ( "build 4: touch `src/incl.rs`; expect build script re-run" ) ;
2601
- sleep_ms ( 1000 ) ;
2602
- File :: create ( p. root ( ) . join ( "src" ) . join ( "incl.rs" ) ) . unwrap ( ) ;
2603
-
2604
- p. cargo ( "build -v" )
2605
- . with_stderr (
2525
+ p. cargo ( "package --list --allow-dirty" )
2526
+ . with_stdout (
2606
2527
"\
2607
- [FRESH] libc [..]
2608
- [FRESH] filetime [..]
2609
- [COMPILING] reduction [..]
2610
- [RUNNING] `[..]/build-script-tango-build`
2611
- [RUNNING] `rustc --crate-name reduction src/lib.rs --crate-type lib [..]`
2612
- [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
2528
+ Cargo.toml
2529
+ ignored.txt
2530
+ src/lib.rs
2613
2531
" ,
2614
2532
)
2615
2533
. run ( ) ;
0 commit comments