|
12 | 12 | use std::path::PathBuf;
|
13 | 13 |
|
14 | 14 | use crate::prelude::*;
|
| 15 | +use cargo_test_support::registry::RegistryBuilder; |
15 | 16 | use cargo_test_support::{Project, prelude::*};
|
16 | 17 | use cargo_test_support::{paths, project, str};
|
17 | 18 | use std::env::consts::{DLL_PREFIX, DLL_SUFFIX, EXE_SUFFIX};
|
@@ -359,6 +360,40 @@ fn cargo_package_should_build_in_build_dir_and_output_to_target_dir() {
|
359 | 360 | assert!(package_build_dir.join("foo-0.0.1").is_dir());
|
360 | 361 | }
|
361 | 362 |
|
| 363 | +#[cargo_test] |
| 364 | +fn cargo_publish_should_only_touch_build_dir() { |
| 365 | + let registry = RegistryBuilder::new().http_api().http_index().build(); |
| 366 | + |
| 367 | + let p = project() |
| 368 | + .file("src/main.rs", r#"fn main() { println!("Hello, World!") }"#) |
| 369 | + .file( |
| 370 | + ".cargo/config.toml", |
| 371 | + r#" |
| 372 | + [build] |
| 373 | + target-dir = "target-dir" |
| 374 | + build-dir = "build-dir" |
| 375 | + "#, |
| 376 | + ) |
| 377 | + .build(); |
| 378 | + |
| 379 | + p.cargo("publish") |
| 380 | + .replace_crates_io(registry.index_url()) |
| 381 | + .enable_mac_dsym() |
| 382 | + .run(); |
| 383 | + |
| 384 | + assert_build_dir_layout(p.root().join("build-dir"), "debug"); |
| 385 | + |
| 386 | + let package_artifact_dir = p.root().join("target-dir/package"); |
| 387 | + assert_exists(&package_artifact_dir); |
| 388 | + assert_exists(&package_artifact_dir.join("foo-0.0.1.crate")); |
| 389 | + assert!(package_artifact_dir.join("foo-0.0.1.crate").is_file()); |
| 390 | + |
| 391 | + let package_build_dir = p.root().join("build-dir/package"); |
| 392 | + assert_exists(&package_build_dir); |
| 393 | + assert_exists(&package_build_dir.join("foo-0.0.1")); |
| 394 | + assert!(package_build_dir.join("foo-0.0.1").is_dir()); |
| 395 | +} |
| 396 | + |
362 | 397 | #[cargo_test]
|
363 | 398 | fn cargo_clean_should_clean_the_target_dir_and_build_dir() {
|
364 | 399 | let p = project()
|
|
0 commit comments