Skip to content

Commit

Permalink
test(priv_dep): add test for verify public is respected recursively
Browse files Browse the repository at this point in the history
  • Loading branch information
linyihai committed Dec 19, 2023
1 parent 1a2666d commit 10ff613
Showing 1 changed file with 132 additions and 0 deletions.
132 changes: 132 additions & 0 deletions tests/testsuite/pub_priv.rs
Expand Up @@ -479,3 +479,135 @@ fn allow_priv_in_custom_build() {
)
.run()
}

#[cargo_test(nightly, reason = "exported_private_dependencies lint is unstable")]
fn recursive_package_pub_no_warning() {
Package::new("grandparent_bar", "0.1.0")
.file("src/lib.rs", "pub struct FromPub;")
.publish();
Package::new("parent_bar", "0.1.0")
.dep("grandparent_bar", "0.1.0")
.file(
"src/lib.rs",
"
extern crate grandparent_bar;
pub use grandparent_bar::*;
",
)
.publish();
Package::new("pub_dep", "0.1.0")
.dep("parent_bar", "0.1.0")
.file(
"src/lib.rs",
"
extern crate parent_bar;
pub use parent_bar::*;
",
)
.publish();
let p = project()
.file(
"Cargo.toml",
r#"
cargo-features = ["public-dependency"]
[package]
name = "foo"
version = "0.0.1"
[dependencies]
pub_dep = {version = "0.1.0", public = true}
"#,
)
.file(
"src/lib.rs",
"
extern crate pub_dep;
pub fn use_pub(_: pub_dep::FromPub) {}
",
)
.build();

p.cargo("check --message-format=short")
.masquerade_as_nightly_cargo(&["public-dependency"])
.with_stderr(
"\
[UPDATING] `[..]` index
[DOWNLOADING] crates ...
[DOWNLOADED] pub_dep v0.1.0 ([..])
[DOWNLOADED] parent_bar v0.1.0 ([..])
[DOWNLOADED] grandparent_bar v0.1.0 ([..])
[CHECKING] grandparent_bar v0.1.0
[CHECKING] parent_bar v0.1.0
[CHECKING] pub_dep v0.1.0
[CHECKING] foo v0.0.1 ([CWD])
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]",
)
.run()
}

#[cargo_test(nightly, reason = "exported_private_dependencies lint is unstable")]
fn recursive_package_priv_warning() {
Package::new("grandparent_bar", "0.1.0")
.file("src/lib.rs", "pub struct FromPriv;")
.publish();
Package::new("parent_bar", "0.1.0")
.dep("grandparent_bar", "0.1.0")
.file(
"src/lib.rs",
"
extern crate grandparent_bar;
pub use grandparent_bar::*;
",
)
.publish();
Package::new("priv_dep", "0.1.0")
.dep("parent_bar", "0.1.0")
.file(
"src/lib.rs",
"
extern crate parent_bar;
pub use parent_bar::*;
",
)
.publish();
let p = project()
.file(
"Cargo.toml",
r#"
cargo-features = ["public-dependency"]
[package]
name = "foo"
version = "0.0.1"
[dependencies]
priv_dep = "0.1.0"
"#,
)
.file(
"src/lib.rs",
"
extern crate priv_dep;
pub fn use_pub(_: priv_dep::FromPriv) {}
",
)
.build();

p.cargo("check --message-format=short")
.masquerade_as_nightly_cargo(&["public-dependency"])
.with_stderr(
"\
[UPDATING] `[..]` index
[DOWNLOADING] crates ...
[DOWNLOADED] priv_dep v0.1.0 ([..])
[DOWNLOADED] parent_bar v0.1.0 ([..])
[DOWNLOADED] grandparent_bar v0.1.0 ([..])
[CHECKING] grandparent_bar v0.1.0
[CHECKING] parent_bar v0.1.0
[CHECKING] priv_dep v0.1.0
[CHECKING] foo v0.0.1 ([CWD])
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]",
)
.run()
}

0 comments on commit 10ff613

Please sign in to comment.