Skip to content

Commit 224222e

Browse files
committed
feat(tree): Add '--depth public' feature-gated value
1 parent 038bd06 commit 224222e

File tree

3 files changed

+43
-34
lines changed

3 files changed

+43
-34
lines changed

src/cargo/ops/tree/mod.rs

+8
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ impl FromStr for Prefix {
9191
#[derive(Clone, Copy)]
9292
pub enum DisplayDepth {
9393
MaxDisplayDepth(u32),
94+
Public,
9495
Workspace,
9596
}
9697

@@ -100,6 +101,7 @@ impl FromStr for DisplayDepth {
100101
fn from_str(s: &str) -> Result<Self, Self::Err> {
101102
match s {
102103
"workspace" => Ok(Self::Workspace),
104+
"public" => Ok(Self::Public),
103105
s => s.parse().map(Self::MaxDisplayDepth).map_err(|_| {
104106
clap::Error::raw(
105107
clap::error::ErrorKind::ValueValidation,
@@ -420,6 +422,12 @@ fn print_dependencies<'a>(
420422
let (max_display_depth, filter_non_workspace_member) = match display_depth {
421423
DisplayDepth::MaxDisplayDepth(max) => (max, false),
422424
DisplayDepth::Workspace => (u32::MAX, true),
425+
DisplayDepth::Public => {
426+
if !ws.gctx().cli_unstable().unstable_options {
427+
anyhow::bail!("`--depth public` requires `-Zunstable-options`")
428+
}
429+
(u32::MAX, false)
430+
}
423431
};
424432

425433
// Current level exceeds maximum display depth. Skip.

tests/testsuite/cargo_tree/deps.rs

+20-24
Original file line numberDiff line numberDiff line change
@@ -1963,44 +1963,38 @@ fn depth_public() {
19631963
.file("dep/src/lib.rs", "")
19641964
.build();
19651965

1966-
p.cargo("tree")
1967-
.masquerade_as_nightly_cargo(&["public-dependency"])
1968-
.with_stdout_data(str![[r#"
1969-
dep v0.1.0 ([ROOT]/foo/dep)
1970-
1971-
diamond v0.1.0 ([ROOT]/foo/diamond)
1972-
├── left-pub v0.1.0 ([ROOT]/foo/left-pub)
1973-
│ └── dep v0.1.0 ([ROOT]/foo/dep)
1974-
└── right-priv v0.1.0 ([ROOT]/foo/right-priv)
1975-
└── dep v0.1.0 ([ROOT]/foo/dep)
1976-
1977-
left-pub v0.1.0 ([ROOT]/foo/left-pub) (*)
1978-
1979-
right-priv v0.1.0 ([ROOT]/foo/right-priv) (*)
1966+
p.cargo("tree --depth public")
1967+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
1968+
.with_status(101)
1969+
.with_stderr_data(str![[r#"
1970+
[ERROR] `--depth public` requires `-Zunstable-options`
19801971
19811972
"#]])
19821973
.run();
19831974

1984-
p.cargo("tree -p left-pub")
1985-
.masquerade_as_nightly_cargo(&["public-dependency"])
1975+
p.cargo("tree --depth public -p left-pub")
1976+
.arg("-Zunstable-options")
1977+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
19861978
.with_stdout_data(str![[r#"
19871979
left-pub v0.1.0 ([ROOT]/foo/left-pub)
19881980
└── dep v0.1.0 ([ROOT]/foo/dep)
19891981
19901982
"#]])
19911983
.run();
19921984

1993-
p.cargo("tree -p right-priv")
1994-
.masquerade_as_nightly_cargo(&["public-dependency"])
1985+
p.cargo("tree --depth public -p right-priv")
1986+
.arg("-Zunstable-options")
1987+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
19951988
.with_stdout_data(str![[r#"
19961989
right-priv v0.1.0 ([ROOT]/foo/right-priv)
19971990
└── dep v0.1.0 ([ROOT]/foo/dep)
19981991
19991992
"#]])
20001993
.run();
20011994

2002-
p.cargo("tree -p diamond")
2003-
.masquerade_as_nightly_cargo(&["public-dependency"])
1995+
p.cargo("tree --depth public -p diamond")
1996+
.arg("-Zunstable-options")
1997+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
20041998
.with_stdout_data(str![[r#"
20051999
diamond v0.1.0 ([ROOT]/foo/diamond)
20062000
├── left-pub v0.1.0 ([ROOT]/foo/left-pub)
@@ -2011,8 +2005,9 @@ diamond v0.1.0 ([ROOT]/foo/diamond)
20112005
"#]])
20122006
.run();
20132007

2014-
p.cargo("tree")
2015-
.masquerade_as_nightly_cargo(&["public-dependency"])
2008+
p.cargo("tree --depth public")
2009+
.arg("-Zunstable-options")
2010+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
20162011
.with_stdout_data(str![[r#"
20172012
dep v0.1.0 ([ROOT]/foo/dep)
20182013
@@ -2029,8 +2024,9 @@ right-priv v0.1.0 ([ROOT]/foo/right-priv) (*)
20292024
"#]])
20302025
.run();
20312026

2032-
p.cargo("tree --invert dep")
2033-
.masquerade_as_nightly_cargo(&["public-dependency"])
2027+
p.cargo("tree --depth public --invert dep")
2028+
.arg("-Zunstable-options")
2029+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
20342030
.with_stdout_data(str![[r#"
20352031
dep v0.1.0 ([ROOT]/foo/dep)
20362032
├── left-pub v0.1.0 ([ROOT]/foo/left-pub)

tests/testsuite/cargo_tree/features.rs

+15-10
Original file line numberDiff line numberDiff line change
@@ -374,8 +374,9 @@ fn depth_public_no_features() {
374374
.file("src/lib.rs", "")
375375
.build();
376376

377-
p.cargo("tree -e features")
378-
.masquerade_as_nightly_cargo(&["public-dependency"])
377+
p.cargo("tree -e features --depth public")
378+
.arg("-Zunstable-options")
379+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
379380
.with_stdout_data(str![[r#"
380381
foo v0.1.0 ([ROOT]/foo)
381382
├── priv-defaultdep feature "default"
@@ -424,8 +425,9 @@ fn depth_public_transitive_features() {
424425
.file("src/lib.rs", "")
425426
.build();
426427

427-
p.cargo("tree -e features")
428-
.masquerade_as_nightly_cargo(&["public-dependency"])
428+
p.cargo("tree -e features --depth public")
429+
.arg("-Zunstable-options")
430+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
429431
.with_stdout_data(str![[r#"
430432
foo v0.1.0 ([ROOT]/foo)
431433
├── priv-defaultdep feature "default"
@@ -483,16 +485,18 @@ fn depth_public_cli() {
483485
.file("src/lib.rs", "")
484486
.build();
485487

486-
p.cargo("tree -e features")
487-
.masquerade_as_nightly_cargo(&["public-dependency"])
488+
p.cargo("tree -e features --depth public")
489+
.arg("-Zunstable-options")
490+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
488491
.with_stdout_data(str![[r#"
489492
foo v0.1.0 ([ROOT]/foo)
490493
491494
"#]])
492495
.run();
493496

494-
p.cargo("tree -e features --features pub-indirect")
495-
.masquerade_as_nightly_cargo(&["public-dependency"])
497+
p.cargo("tree -e features --depth public --features pub-indirect")
498+
.arg("-Zunstable-options")
499+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
496500
.with_stdout_data(str![[r#"
497501
foo v0.1.0 ([ROOT]/foo)
498502
└── pub feature "default"
@@ -501,8 +505,9 @@ foo v0.1.0 ([ROOT]/foo)
501505
"#]])
502506
.run();
503507

504-
p.cargo("tree -e features --features priv-indirect")
505-
.masquerade_as_nightly_cargo(&["public-dependency"])
508+
p.cargo("tree -e features --depth public --features priv-indirect")
509+
.arg("-Zunstable-options")
510+
.masquerade_as_nightly_cargo(&["public-dependency", "depth-public"])
506511
.with_stdout_data(str![[r#"
507512
foo v0.1.0 ([ROOT]/foo)
508513
└── priv feature "default"

0 commit comments

Comments
 (0)