Skip to content

Commit 153146e

Browse files
committed
test(vendor): respect to Cargo.toml [package.exclude]
1 parent 31fcba3 commit 153146e

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

tests/testsuite/vendor.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,50 @@ fn add_vendor_config(p: &Project) {
5050
);
5151
}
5252

53+
#[cargo_test]
54+
fn package_exclude() {
55+
let p = project()
56+
.file(
57+
"Cargo.toml",
58+
r#"
59+
[package]
60+
name = "foo"
61+
version = "0.1.0"
62+
63+
[dependencies]
64+
bar = "0.1.0"
65+
"#,
66+
)
67+
.file("src/lib.rs", "")
68+
.build();
69+
70+
Package::new("bar", "0.1.0")
71+
.file(
72+
"Cargo.toml",
73+
r#"
74+
[package]
75+
name = "bar"
76+
version = "0.1.0"
77+
exclude = [".*", "!.include", "!.dotdir/include"]
78+
"#,
79+
)
80+
.file("src/lib.rs", "")
81+
.file(".exclude", "")
82+
.file(".include", "")
83+
.file(".dotdir/exclude", "")
84+
.file(".dotdir/include", "")
85+
.publish();
86+
87+
p.cargo("vendor --respect-source-config").run();
88+
let csum = dbg!(p.read_file("vendor/bar/.cargo-checksum.json"));
89+
assert!(csum.contains(".include"));
90+
assert!(!csum.contains(".exclude"));
91+
assert!(!csum.contains(".dotdir/exclude"));
92+
// Gitignore doesn't re-include a file in an excluded parent directory,
93+
// even if negating it explicitly.
94+
assert!(!csum.contains(".dotdir/include"));
95+
}
96+
5397
#[cargo_test]
5498
fn two_versions() {
5599
let p = project()

0 commit comments

Comments
 (0)