Skip to content

Commit 6868215

Browse files
committed
Don't show (*) deduplicate if a node doesn't have any dependencies to show.
1 parent 9dc56c6 commit 6868215

File tree

4 files changed

+42
-29
lines changed

4 files changed

+42
-29
lines changed

src/cargo/ops/tree/graph.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ impl<'a> Graph<'a> {
117117
}
118118
}
119119

120+
/// Returns `true` if the given node has any outgoing edges.
121+
pub fn has_outgoing_edges(&self, index: usize) -> bool {
122+
!self.edges[index].0.is_empty()
123+
}
124+
120125
/// Gets a node by index.
121126
pub fn node(&self, index: usize) -> &Node {
122127
&self.nodes[index]

src/cargo/ops/tree/mod.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,15 @@ fn print_node<'a>(
249249
}
250250

251251
let in_cycle = print_stack.contains(&node_index);
252-
let star = if new && !in_cycle { "" } else { " (*)" };
252+
// If this node does not have any outgoing edges, don't include the (*)
253+
// since there isn't really anything "deduplicated", and it generally just
254+
// adds noise.
255+
let has_deps = graph.has_outgoing_edges(node_index);
256+
let star = if (new && !in_cycle) || !has_deps {
257+
""
258+
} else {
259+
" (*)"
260+
};
253261
println!("{}{}", format.display(graph, node_index), star);
254262

255263
if !new || in_cycle {

tests/testsuite/tree.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ foo v0.1.0 ([..]/foo)
4747
├── a v1.0.0
4848
│ └── b v1.0.0
4949
│ └── c v1.0.0
50-
└── c v1.0.0 (*)
50+
└── c v1.0.0
5151
[build-dependencies]
5252
└── bdep v1.0.0
5353
└── b v1.0.0 (*)
@@ -109,7 +109,7 @@ b v0.1.0 ([..]/foo/b)
109109
├── c v1.0.0 ([..]/foo/c)
110110
└── somedep v1.0.0
111111
112-
c v1.0.0 ([..]/foo/c) (*)
112+
c v1.0.0 ([..]/foo/c)
113113
",
114114
)
115115
.run();
@@ -379,7 +379,7 @@ foo v0.1.0 ([..]/foo)
379379
└── pm_host v1.0.0
380380
[build-dependencies]
381381
└── build_host_dep v1.0.0
382-
└── hostdep v1.0.0 (*)
382+
└── hostdep v1.0.0
383383
",
384384
)
385385
.run();
@@ -430,8 +430,8 @@ foo v0.1.0 ([..]/foo)
430430
└── targetdep v1.0.0
431431
[build-dependencies]
432432
├── build_host_dep v1.0.0
433-
│ ├── hostdep v1.0.0 (*)
434-
│ └── targetdep v1.0.0 (*)
433+
│ ├── hostdep v1.0.0
434+
│ └── targetdep v1.0.0
435435
└── build_target_dep v1.0.0
436436
[dev-dependencies]
437437
└── devdep v1.0.0
@@ -561,7 +561,7 @@ foo v0.1.0 ([..]/foo)
561561
│ └── c v1.0.0
562562
├── b2 v1.0.0
563563
│ └── d v1.0.0
564-
└── c v1.0.0 (*)
564+
└── c v1.0.0
565565
",
566566
)
567567
.run();
@@ -572,7 +572,7 @@ foo v0.1.0 ([..]/foo)
572572
c v1.0.0
573573
├── b1 v1.0.0
574574
│ └── foo v0.1.0 ([..]/foo)
575-
└── foo v0.1.0 ([..]/foo) (*)
575+
└── foo v0.1.0 ([..]/foo)
576576
",
577577
)
578578
.run();
@@ -608,7 +608,7 @@ foo v0.1.0 ([..]/foo)
608608
└── common v1.0.0
609609
[build-dependencies]
610610
└── bdep v1.0.0
611-
└── common v1.0.0 (*)
611+
└── common v1.0.0
612612
",
613613
)
614614
.run();
@@ -620,7 +620,7 @@ common v1.0.0
620620
├── bdep v1.0.0
621621
│ [build-dependencies]
622622
│ └── foo v0.1.0 ([..]/foo)
623-
└── foo v0.1.0 ([..]/foo) (*)
623+
└── foo v0.1.0 ([..]/foo)
624624
",
625625
)
626626
.run();
@@ -637,7 +637,7 @@ foo v0.1.0 ([..]/foo)
637637
a v1.0.0
638638
b v1.0.0
639639
c v1.0.0
640-
c v1.0.0 (*)
640+
c v1.0.0
641641
bdep v1.0.0
642642
b v1.0.0 (*)
643643
devdep v1.0.0
@@ -658,7 +658,7 @@ fn prefix_depth() {
658658
1a v1.0.0
659659
2b v1.0.0
660660
3c v1.0.0
661-
1c v1.0.0 (*)
661+
1c v1.0.0
662662
1bdep v1.0.0
663663
2b v1.0.0 (*)
664664
1devdep v1.0.0
@@ -821,7 +821,7 @@ dog v1.0.0
821821
└── a v0.1.0 ([..]/foo/a)
822822
823823
dog v2.0.0
824-
└── a v0.1.0 ([..]/foo/a) (*)
824+
└── a v0.1.0 ([..]/foo/a)
825825
",
826826
)
827827
.run();
@@ -834,7 +834,7 @@ cat v1.0.0
834834
└── b v0.1.0 ([..]/foo/b)
835835
836836
cat v2.0.0
837-
└── b v0.1.0 ([..]/foo/b) (*)
837+
└── b v0.1.0 ([..]/foo/b)
838838
",
839839
)
840840
.run();
@@ -850,7 +850,7 @@ foo v0.1.0 ([..]/foo)
850850
|-- a v1.0.0
851851
| `-- b v1.0.0
852852
| `-- c v1.0.0
853-
`-- c v1.0.0 (*)
853+
`-- c v1.0.0
854854
[build-dependencies]
855855
`-- bdep v1.0.0
856856
`-- b v1.0.0 (*)
@@ -1076,7 +1076,7 @@ optdep v1.0.0
10761076
└── bar v1.0.0
10771077
└── foo v0.1.0 ([..]/foo)
10781078
[build-dependencies]
1079-
└── foo v0.1.0 ([..]/foo) (*)
1079+
└── foo v0.1.0 ([..]/foo)
10801080
",
10811081
)
10821082
.run();
@@ -1103,7 +1103,7 @@ bar v1.0.0
11031103
11041104
bar v1.0.0
11051105
[build-dependencies]
1106-
└── foo v0.1.0 ([..]/foo) (*)
1106+
└── foo v0.1.0 ([..]/foo)
11071107
",
11081108
)
11091109
.run();
@@ -1191,7 +1191,7 @@ somedep v1.0.0
11911191
somedep v1.0.0
11921192
├── foo v0.1.0 ([..]/foo)
11931193
└── pm v1.0.0
1194-
└── foo v0.1.0 ([..]/foo) (*)
1194+
└── foo v0.1.0 ([..]/foo)
11951195
",
11961196
)
11971197
.run();
@@ -1205,7 +1205,7 @@ somedep v1.0.0
12051205
12061206
somedep v1.0.0
12071207
└── pm v1.0.0
1208-
└── foo v0.1.0 ([..]/foo) (*)
1208+
└── foo v0.1.0 ([..]/foo)
12091209
",
12101210
)
12111211
.run();

tests/testsuite/tree_graph_features.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ foo v0.1.0 ([..]/foo)
5959
│ │ └── optdep feature \"default\"
6060
│ │ ├── optdep v1.0.0
6161
│ │ └── optdep feature \"cat\"
62-
│ │ └── optdep v1.0.0 (*)
62+
│ │ └── optdep v1.0.0
6363
│ └── defaultdep feature \"f1\"
6464
│ ├── defaultdep v1.0.0 (*)
6565
│ └── defaultdep feature \"optdep\"
@@ -139,11 +139,11 @@ a v0.1.0 ([..]/foo/a)
139139
├── b feature \"default\" (command-line)
140140
│ ├── b v0.1.0 ([..]/foo/b)
141141
│ └── b feature \"feat1\"
142-
│ └── b v0.1.0 ([..]/foo/b) (*)
142+
│ └── b v0.1.0 ([..]/foo/b)
143143
└── b feature \"feat2\"
144-
└── b v0.1.0 ([..]/foo/b) (*)
144+
└── b v0.1.0 ([..]/foo/b)
145145
146-
b v0.1.0 ([..]/foo/b) (*)
146+
b v0.1.0 ([..]/foo/b)
147147
",
148148
)
149149
.run();
@@ -154,7 +154,7 @@ b v0.1.0 ([..]/foo/b) (*)
154154
a v0.1.0 ([..]/foo/a)
155155
├── a feature \"a1\"
156156
│ └── a feature \"default\" (command-line)
157-
└── a feature \"default\" (command-line) (*)
157+
└── a feature \"default\" (command-line)
158158
159159
b v0.1.0 ([..]/foo/b)
160160
├── b feature \"default\" (command-line)
@@ -218,7 +218,7 @@ foo v0.1.0 ([..]/foo)
218218
├── foo feature \"default\" (command-line)
219219
├── foo feature \"f1\" (command-line)
220220
└── foo feature \"opt\"
221-
└── foo feature \"f1\" (command-line) (*)
221+
└── foo feature \"f1\" (command-line)
222222
",
223223
)
224224
.run();
@@ -234,9 +234,9 @@ notopt v1.0.0
234234
└── notopt feature \"default\"
235235
└── foo v0.1.0 ([..]/foo)
236236
├── foo feature \"default\" (command-line)
237-
├── foo feature \"f1\" (command-line) (*)
237+
├── foo feature \"f1\" (command-line)
238238
└── foo feature \"opt\"
239-
└── foo feature \"f1\" (command-line) (*)
239+
└── foo feature \"f1\" (command-line)
240240
",
241241
)
242242
.run();
@@ -247,7 +247,7 @@ notopt v1.0.0
247247
notopt v1.0.0
248248
├── notopt feature \"animal\" (command-line)
249249
├── notopt feature \"cat\"
250-
│ └── notopt feature \"animal\" (command-line) (*)
250+
│ └── notopt feature \"animal\" (command-line)
251251
└── notopt feature \"default\"
252252
└── foo v0.1.0 ([..]/foo)
253253
└── foo feature \"default\" (command-line)
@@ -277,7 +277,7 @@ opt2 v1.0.0
277277
└── foo v0.1.0 ([..]/foo)
278278
├── foo feature \"f1\" (command-line)
279279
│ └── foo feature \"f2\" (command-line)
280-
├── foo feature \"f2\" (command-line) (*)
280+
├── foo feature \"f2\" (command-line)
281281
├── foo feature \"opt\" (command-line)
282282
│ └── foo feature \"f1\" (command-line) (*)
283283
└── foo feature \"opt2\" (command-line)

0 commit comments

Comments
 (0)