3 use std::path::PathBuf;
4 use std::process::Command;
5 use test_utils::{CARGO_CLIPPY_PATH, IS_RUSTC_TEST_SUITE};
10 fn test_no_deps_ignores_path_deps_in_workspaces() {
11 if IS_RUSTC_TEST_SUITE {
14 let root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
15 let target_dir = root.join("target").join("workspace_test");
16 let cwd = root.join("tests/workspace_test");
18 // Make sure we start with a clean state
21 .env("CARGO_TARGET_DIR", &target_dir)
23 .args(["-p", "subcrate"])
24 .args(["-p", "path_dep"])
28 // `path_dep` is a path dependency of `subcrate` that would trigger a denied lint.
29 // Make sure that with the `--no-deps` argument Clippy does not run on `path_dep`.
30 let output = Command::new(&*CARGO_CLIPPY_PATH)
32 .env("CARGO_INCREMENTAL", "0")
33 .env("CARGO_TARGET_DIR", &target_dir)
35 .args(["-p", "subcrate"])
38 .arg("-Cdebuginfo=0") // disable debuginfo to generate less data in the target dir
39 .args(["--cfg", r#"feature="primary_package_test""#])
42 println!("status: {}", output.status);
43 println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
44 println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
46 assert!(output.status.success());
48 let lint_path_dep = || {
49 // Test that without the `--no-deps` argument, `path_dep` is linted.
50 let output = Command::new(&*CARGO_CLIPPY_PATH)
52 .env("CARGO_INCREMENTAL", "0")
53 .env("CARGO_TARGET_DIR", &target_dir)
55 .args(["-p", "subcrate"])
57 .arg("-Cdebuginfo=0") // disable debuginfo to generate less data in the target dir
58 .args(["--cfg", r#"feature="primary_package_test""#])
61 println!("status: {}", output.status);
62 println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
63 println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
65 assert!(!output.status.success());
67 String::from_utf8(output.stderr)
69 .contains("error: empty `loop {}` wastes CPU cycles")
73 // Make sure Cargo is aware of the removal of `--no-deps`.
76 let successful_build = || {
77 let output = Command::new(&*CARGO_CLIPPY_PATH)
79 .env("CARGO_INCREMENTAL", "0")
80 .env("CARGO_TARGET_DIR", &target_dir)
82 .args(["-p", "subcrate"])
84 .arg("-Cdebuginfo=0") // disable debuginfo to generate less data in the target dir
87 println!("status: {}", output.status);
88 println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
89 println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
91 assert!(output.status.success());
96 // Trigger a successful build, so Cargo would like to cache the build result.
99 // Make sure there's no spurious rebuild when nothing changes.
100 let stderr = String::from_utf8(successful_build().stderr).unwrap();
101 assert!(!stderr.contains("Compiling"));
102 assert!(!stderr.contains("Checking"));
103 assert!(stderr.contains("Finished"));
105 // Make sure Cargo is aware of the new `--cfg` flag.