|
1 | 1 | //! Tests for the `cargo tree` command with -e features option.
|
2 | 2 |
|
3 |
| -#![allow(deprecated)] |
4 |
| - |
5 | 3 | use cargo_test_support::project;
|
6 | 4 | use cargo_test_support::registry::{Dependency, Package};
|
| 5 | +use cargo_test_support::str; |
7 | 6 |
|
8 | 7 | #[cargo_test]
|
9 | 8 | fn dep_feature_various() {
|
@@ -52,41 +51,40 @@ fn dep_feature_various() {
|
52 | 51 | .build();
|
53 | 52 |
|
54 | 53 | p.cargo("tree -e features")
|
55 |
| - .with_stdout( |
56 |
| - "\ |
57 |
| -foo v0.1.0 ([..]/foo) |
| 54 | + .with_stdout_data(str![[r#" |
| 55 | +foo v0.1.0 ([ROOT]/foo) |
58 | 56 | ├── nodefaultdep v1.0.0
|
59 |
| -├── defaultdep feature \"default\" |
| 57 | +├── defaultdep feature "default" |
60 | 58 | │ ├── defaultdep v1.0.0
|
61 |
| -│ │ └── optdep feature \"default\" |
| 59 | +│ │ └── optdep feature "default" |
62 | 60 | │ │ ├── optdep v1.0.0
|
63 |
| -│ │ └── optdep feature \"cat\" |
| 61 | +│ │ └── optdep feature "cat" |
64 | 62 | │ │ └── optdep v1.0.0
|
65 |
| -│ └── defaultdep feature \"f1\" |
| 63 | +│ └── defaultdep feature "f1" |
66 | 64 | │ ├── defaultdep v1.0.0 (*)
|
67 |
| -│ └── defaultdep feature \"optdep\" |
| 65 | +│ └── defaultdep feature "optdep" |
68 | 66 | │ └── defaultdep v1.0.0 (*)
|
69 |
| -├── nameddep feature \"default\" |
| 67 | +├── nameddep feature "default" |
70 | 68 | │ ├── nameddep v1.0.0
|
71 |
| -│ │ └── serde feature \"default\" |
| 69 | +│ │ └── serde feature "default" |
72 | 70 | │ │ └── serde v1.0.0
|
73 |
| -│ │ └── serde_derive feature \"default\" |
| 71 | +│ │ └── serde_derive feature "default" |
74 | 72 | │ │ └── serde_derive v1.0.0
|
75 |
| -│ └── nameddep feature \"serde-stuff\" |
| 73 | +│ └── nameddep feature "serde-stuff" |
76 | 74 | │ ├── nameddep v1.0.0 (*)
|
77 |
| -│ ├── nameddep feature \"serde\" |
| 75 | +│ ├── nameddep feature "serde" |
78 | 76 | │ │ └── nameddep v1.0.0 (*)
|
79 |
| -│ └── serde feature \"derive\" |
| 77 | +│ └── serde feature "derive" |
80 | 78 | │ ├── serde v1.0.0 (*)
|
81 |
| -│ └── serde feature \"serde_derive\" |
| 79 | +│ └── serde feature "serde_derive" |
82 | 80 | │ └── serde v1.0.0 (*)
|
83 |
| -├── nameddep feature \"serde\" (*) |
84 |
| -└── nameddep feature \"vehicle\" |
| 81 | +├── nameddep feature "serde" (*) |
| 82 | +└── nameddep feature "vehicle" |
85 | 83 | ├── nameddep v1.0.0 (*)
|
86 |
| - └── nameddep feature \"car\" |
| 84 | + └── nameddep feature "car" |
87 | 85 | └── nameddep v1.0.0 (*)
|
88 |
| -", |
89 |
| - ) |
| 86 | +
|
| 87 | +"#]]) |
90 | 88 | .run();
|
91 | 89 | }
|
92 | 90 |
|
@@ -135,38 +133,36 @@ fn graph_features_ws_interdependent() {
|
135 | 133 | .build();
|
136 | 134 |
|
137 | 135 | p.cargo("tree -e features")
|
138 |
| - .with_stdout( |
139 |
| - "\ |
140 |
| -a v0.1.0 ([..]/foo/a) |
141 |
| -├── b feature \"default\" (command-line) |
142 |
| -│ ├── b v0.1.0 ([..]/foo/b) |
143 |
| -│ └── b feature \"feat1\" |
144 |
| -│ └── b v0.1.0 ([..]/foo/b) |
145 |
| -└── b feature \"feat2\" |
146 |
| - └── b v0.1.0 ([..]/foo/b) |
147 |
| -
|
148 |
| -b v0.1.0 ([..]/foo/b) |
149 |
| -", |
150 |
| - ) |
| 136 | + .with_stdout_data(str![[r#" |
| 137 | +a v0.1.0 ([ROOT]/foo/a) |
| 138 | +├── b feature "default" (command-line) |
| 139 | +│ ├── b v0.1.0 ([ROOT]/foo/b) |
| 140 | +│ └── b feature "feat1" |
| 141 | +│ └── b v0.1.0 ([ROOT]/foo/b) |
| 142 | +└── b feature "feat2" |
| 143 | + └── b v0.1.0 ([ROOT]/foo/b) |
| 144 | +
|
| 145 | +b v0.1.0 ([ROOT]/foo/b) |
| 146 | +
|
| 147 | +"#]]) |
151 | 148 | .run();
|
152 | 149 |
|
153 | 150 | p.cargo("tree -e features -i a -i b")
|
154 |
| - .with_stdout( |
155 |
| - "\ |
156 |
| -a v0.1.0 ([..]/foo/a) |
157 |
| -├── a feature \"a1\" |
158 |
| -│ └── a feature \"default\" (command-line) |
159 |
| -└── a feature \"default\" (command-line) |
160 |
| -
|
161 |
| -b v0.1.0 ([..]/foo/b) |
162 |
| -├── b feature \"default\" (command-line) |
163 |
| -│ └── a v0.1.0 ([..]/foo/a) (*) |
164 |
| -├── b feature \"feat1\" |
165 |
| -│ └── b feature \"default\" (command-line) (*) |
166 |
| -└── b feature \"feat2\" |
167 |
| - └── a v0.1.0 ([..]/foo/a) (*) |
168 |
| -", |
169 |
| - ) |
| 151 | + .with_stdout_data(str![[r#" |
| 152 | +a v0.1.0 ([ROOT]/foo/a) |
| 153 | +├── a feature "a1" |
| 154 | +│ └── a feature "default" (command-line) |
| 155 | +└── a feature "default" (command-line) |
| 156 | +
|
| 157 | +b v0.1.0 ([ROOT]/foo/b) |
| 158 | +├── b feature "default" (command-line) |
| 159 | +│ └── a v0.1.0 ([ROOT]/foo/a) (*) |
| 160 | +├── b feature "feat1" |
| 161 | +│ └── b feature "default" (command-line) (*) |
| 162 | +└── b feature "feat2" |
| 163 | + └── a v0.1.0 ([ROOT]/foo/a) (*) |
| 164 | +
|
| 165 | +"#]]) |
170 | 166 | .run();
|
171 | 167 | }
|
172 | 168 |
|
@@ -202,90 +198,84 @@ fn slash_feature_name() {
|
202 | 198 | .build();
|
203 | 199 |
|
204 | 200 | p.cargo("tree -e features --features f1")
|
205 |
| - .with_stdout( |
206 |
| - "\ |
207 |
| -foo v0.1.0 ([..]/foo) |
208 |
| -├── notopt feature \"default\" |
| 201 | + .with_stdout_data(str![[r#" |
| 202 | +foo v0.1.0 ([ROOT]/foo) |
| 203 | +├── notopt feature "default" |
209 | 204 | │ └── notopt v1.0.0
|
210 |
| -└── opt feature \"default\" |
| 205 | +└── opt feature "default" |
211 | 206 | └── opt v1.0.0
|
212 |
| -", |
213 |
| - ) |
| 207 | +
|
| 208 | +"#]]) |
214 | 209 | .run();
|
215 | 210 |
|
216 | 211 | p.cargo("tree -e features --features f1 -i foo")
|
217 |
| - .with_stdout( |
218 |
| - "\ |
219 |
| -foo v0.1.0 ([..]/foo) |
220 |
| -├── foo feature \"default\" (command-line) |
221 |
| -├── foo feature \"f1\" (command-line) |
222 |
| -└── foo feature \"opt\" |
223 |
| - └── foo feature \"f1\" (command-line) |
224 |
| -", |
225 |
| - ) |
| 212 | + .with_stdout_data(str![[r#" |
| 213 | +foo v0.1.0 ([ROOT]/foo) |
| 214 | +├── foo feature "default" (command-line) |
| 215 | +├── foo feature "f1" (command-line) |
| 216 | +└── foo feature "opt" |
| 217 | + └── foo feature "f1" (command-line) |
| 218 | +
|
| 219 | +"#]]) |
226 | 220 | .run();
|
227 | 221 |
|
228 | 222 | p.cargo("tree -e features --features f1 -i notopt")
|
229 |
| - .with_stdout( |
230 |
| - "\ |
| 223 | + .with_stdout_data(str![[r#" |
231 | 224 | notopt v1.0.0
|
232 |
| -├── notopt feature \"animal\" |
233 |
| -│ └── foo feature \"f1\" (command-line) |
234 |
| -├── notopt feature \"cat\" |
235 |
| -│ └── notopt feature \"animal\" (*) |
236 |
| -└── notopt feature \"default\" |
237 |
| - └── foo v0.1.0 ([..]/foo) |
238 |
| - ├── foo feature \"default\" (command-line) |
239 |
| - ├── foo feature \"f1\" (command-line) |
240 |
| - └── foo feature \"opt\" |
241 |
| - └── foo feature \"f1\" (command-line) |
242 |
| -", |
243 |
| - ) |
| 225 | +├── notopt feature "animal" |
| 226 | +│ └── foo feature "f1" (command-line) |
| 227 | +├── notopt feature "cat" |
| 228 | +│ └── notopt feature "animal" (*) |
| 229 | +└── notopt feature "default" |
| 230 | + └── foo v0.1.0 ([ROOT]/foo) |
| 231 | + ├── foo feature "default" (command-line) |
| 232 | + ├── foo feature "f1" (command-line) |
| 233 | + └── foo feature "opt" |
| 234 | + └── foo feature "f1" (command-line) |
| 235 | +
|
| 236 | +"#]]) |
244 | 237 | .run();
|
245 | 238 |
|
246 | 239 | p.cargo("tree -e features --features notopt/animal -i notopt")
|
247 |
| - .with_stdout( |
248 |
| - "\ |
| 240 | + .with_stdout_data(str![[r#" |
249 | 241 | notopt v1.0.0
|
250 |
| -├── notopt feature \"animal\" (command-line) |
251 |
| -├── notopt feature \"cat\" |
252 |
| -│ └── notopt feature \"animal\" (command-line) |
253 |
| -└── notopt feature \"default\" |
254 |
| - └── foo v0.1.0 ([..]/foo) |
255 |
| - └── foo feature \"default\" (command-line) |
256 |
| -", |
257 |
| - ) |
| 242 | +├── notopt feature "animal" (command-line) |
| 243 | +├── notopt feature "cat" |
| 244 | +│ └── notopt feature "animal" (command-line) |
| 245 | +└── notopt feature "default" |
| 246 | + └── foo v0.1.0 ([ROOT]/foo) |
| 247 | + └── foo feature "default" (command-line) |
| 248 | +
|
| 249 | +"#]]) |
258 | 250 | .run();
|
259 | 251 |
|
260 | 252 | p.cargo("tree -e features --all-features")
|
261 |
| - .with_stdout( |
262 |
| - "\ |
263 |
| -foo v0.1.0 ([..]/foo) |
264 |
| -├── notopt feature \"default\" |
| 253 | + .with_stdout_data(str![[r#" |
| 254 | +foo v0.1.0 ([ROOT]/foo) |
| 255 | +├── notopt feature "default" |
265 | 256 | │ └── notopt v1.0.0
|
266 |
| -├── opt feature \"default\" |
| 257 | +├── opt feature "default" |
267 | 258 | │ └── opt v1.0.0
|
268 |
| -└── opt2 feature \"default\" |
| 259 | +└── opt2 feature "default" |
269 | 260 | └── opt2 v1.0.0
|
270 |
| -", |
271 |
| - ) |
| 261 | +
|
| 262 | +"#]]) |
272 | 263 | .run();
|
273 | 264 |
|
274 | 265 | p.cargo("tree -e features --all-features -i opt2")
|
275 |
| - .with_stdout( |
276 |
| - "\ |
| 266 | + .with_stdout_data(str![[r#" |
277 | 267 | opt2 v1.0.0
|
278 |
| -└── opt2 feature \"default\" |
279 |
| - └── foo v0.1.0 ([..]/foo) |
280 |
| - ├── foo feature \"default\" (command-line) |
281 |
| - ├── foo feature \"f1\" (command-line) |
282 |
| - │ └── foo feature \"f2\" (command-line) |
283 |
| - ├── foo feature \"f2\" (command-line) |
284 |
| - ├── foo feature \"opt\" (command-line) |
285 |
| - │ └── foo feature \"f1\" (command-line) (*) |
286 |
| - └── foo feature \"opt2\" (command-line) |
287 |
| -", |
288 |
| - ) |
| 268 | +└── opt2 feature "default" |
| 269 | + └── foo v0.1.0 ([ROOT]/foo) |
| 270 | + ├── foo feature "default" (command-line) |
| 271 | + ├── foo feature "f1" (command-line) |
| 272 | + │ └── foo feature "f2" (command-line) |
| 273 | + ├── foo feature "f2" (command-line) |
| 274 | + ├── foo feature "opt" (command-line) |
| 275 | + │ └── foo feature "f1" (command-line) (*) |
| 276 | + └── foo feature "opt2" (command-line) |
| 277 | +
|
| 278 | +"#]]) |
289 | 279 | .run();
|
290 | 280 | }
|
291 | 281 |
|
@@ -330,35 +320,32 @@ fn features_enables_inactive_target() {
|
330 | 320 | .file("src/lib.rs", "")
|
331 | 321 | .build();
|
332 | 322 | p.cargo("tree -e features")
|
333 |
| - .with_stdout( |
334 |
| - "\ |
335 |
| -foo v0.1.0 ([..]/foo) |
336 |
| -└── dep2 feature \"default\" |
| 323 | + .with_stdout_data(str![[r#" |
| 324 | +foo v0.1.0 ([ROOT]/foo) |
| 325 | +└── dep2 feature "default" |
337 | 326 | └── dep2 v1.0.0
|
338 |
| -", |
339 |
| - ) |
| 327 | +
|
| 328 | +"#]]) |
340 | 329 | .run();
|
341 | 330 | p.cargo("tree -e features --all-features")
|
342 |
| - .with_stdout( |
343 |
| - "\ |
344 |
| -foo v0.1.0 ([..]/foo) |
345 |
| -└── dep2 feature \"default\" |
| 331 | + .with_stdout_data(str![[r#" |
| 332 | +foo v0.1.0 ([ROOT]/foo) |
| 333 | +└── dep2 feature "default" |
346 | 334 | └── dep2 v1.0.0
|
347 |
| -", |
348 |
| - ) |
| 335 | +
|
| 336 | +"#]]) |
349 | 337 | .run();
|
350 | 338 | p.cargo("tree -e features --all-features --target=all")
|
351 |
| - .with_stdout( |
352 |
| - "\ |
353 |
| -foo v0.1.0 ([..]/foo) |
354 |
| -├── dep1 feature \"default\" |
| 339 | + .with_stdout_data(str![[r#" |
| 340 | +foo v0.1.0 ([ROOT]/foo) |
| 341 | +├── dep1 feature "default" |
355 | 342 | │ └── dep1 v1.0.0
|
356 |
| -├── dep2 feature \"default\" |
| 343 | +├── dep2 feature "default" |
357 | 344 | │ └── dep2 v1.0.0
|
358 |
| -│ └── optdep feature \"default\" |
| 345 | +│ └── optdep feature "default" |
359 | 346 | │ └── optdep v1.0.0
|
360 |
| -└── optdep feature \"default\" (*) |
361 |
| -", |
362 |
| - ) |
| 347 | +└── optdep feature "default" (*) |
| 348 | +
|
| 349 | +"#]]) |
363 | 350 | .run();
|
364 | 351 | }
|
0 commit comments