@@ -4,7 +4,7 @@ use cargo_test_support::compare::assert_match_exact;
4
4
use cargo_test_support:: paths:: CargoPathExt ;
5
5
use cargo_test_support:: registry:: Package ;
6
6
use cargo_test_support:: tools;
7
- use cargo_test_support:: { basic_manifest, cross_compile, is_coarse_mtime, project} ;
7
+ use cargo_test_support:: { basic_manifest, cross_compile, is_coarse_mtime, project, project_in } ;
8
8
use cargo_test_support:: { rustc_host, sleep_ms, slow_cpu_multiplier, symlink_supported} ;
9
9
use cargo_util:: paths:: remove_dir_all;
10
10
use std:: env;
@@ -3248,6 +3248,69 @@ fn generate_good_d_files() {
3248
3248
. any( |v| v == "barkbarkbark" || v == "build.rs" ) ) ;
3249
3249
}
3250
3250
3251
+ #[ cargo_test]
3252
+ fn generate_good_d_files_for_external_tools ( ) {
3253
+ // This tests having a relative paths going out of the
3254
+ // project root in config's dep-info-basedir
3255
+ let p = project_in ( "rust_things" )
3256
+ . file (
3257
+ "awoo/Cargo.toml" ,
3258
+ r#"
3259
+ [project]
3260
+ name = "awoo"
3261
+ version = "0.5.0"
3262
+ build = "build.rs"
3263
+ "# ,
3264
+ )
3265
+ . file ( "awoo/src/lib.rs" , "" )
3266
+ . file (
3267
+ "awoo/build.rs" ,
3268
+ r#"
3269
+ fn main() {
3270
+ println!("cargo:rerun-if-changed=build.rs");
3271
+ println!("cargo:rerun-if-changed=barkbarkbark");
3272
+ }
3273
+ "# ,
3274
+ )
3275
+ . file (
3276
+ "Cargo.toml" ,
3277
+ r#"
3278
+ [project]
3279
+ name = "meow"
3280
+ version = "0.5.0"
3281
+ [dependencies]
3282
+ awoo = { path = "awoo" }
3283
+ "# ,
3284
+ )
3285
+ . file ( "src/main.rs" , "fn main() {}" )
3286
+ . file (
3287
+ ".cargo/config.toml" ,
3288
+ r#"
3289
+ [build]
3290
+ dep-info-basedir="../.."
3291
+ "# ,
3292
+ )
3293
+ . build ( ) ;
3294
+
3295
+ p. cargo ( "build -v" ) . run ( ) ;
3296
+
3297
+ let dot_d_path = p. bin ( "meow" ) . with_extension ( "d" ) ;
3298
+ let dot_d = fs:: read_to_string ( & dot_d_path) . unwrap ( ) ;
3299
+
3300
+ println ! ( "*.d file content with dep-info-basedir*: {}" , & dot_d) ;
3301
+
3302
+ assert_match_exact (
3303
+ concat ! (
3304
+ "rust_things/foo/target/debug/meow[EXE]:" ,
3305
+ " rust_things/foo/awoo/barkbarkbark" ,
3306
+ " rust_things/foo/awoo/build.rs" ,
3307
+ " rust_things/foo/awoo/src/lib.rs" ,
3308
+ " rust_things/foo/src/main.rs" ,
3309
+ ) ,
3310
+ & dot_d,
3311
+ ) ;
3312
+ }
3313
+
3251
3314
#[ cargo_test]
3252
3315
fn rebuild_only_on_explicit_paths ( ) {
3253
3316
let p = project ( )
0 commit comments