cargo-udeps 0.1.13

Find unused dependencies in Cargo.toml
Documentation
mod runner;

use cargo::CargoResult;
use pretty_assertions::assert_eq;

use crate::runner::Runner;

static CARGO_TOML: &str = r#"[workspace]

[package]
name = "normal_dev_build"
version = "0.0.1"
edition = "2018"
publish = false

[dependencies]
if_chain = "1.0.0"

[dev-dependencies]
maplit = "1.0.2"

[build-dependencies]
matches = "0.1.8"
"#;

static LIB_RS: &str = "";
static BUILD_RS: &str = "fn main() {}\n";

#[test]
fn without_all_targets() -> CargoResult<()> {
	let (code, stdout_masked) =
		Runner::new("cargo_udeps_test_normal_dev_build_without_all_targets")?
			.cargo_toml(CARGO_TOML)?
			.dir("./src")?
			.file("./src/lib.rs", LIB_RS)?
			.file("./build.rs", BUILD_RS)?
			.run()?;
	assert_eq!(1, code);
	assert_eq!(
		r#"unused dependencies:
`normal_dev_build v0.0.1 (██████████)`
├─── dependencies
│    └─── "if_chain"
└─── build-dependencies
     └─── "matches"
Note: These dependencies might be used by other targets.
      To find dependencies that are not used by any target, enable `--all-targets`.
Note: They might be false-positive.
      For example, `cargo-udeps` cannot detect usage of crates that are only used in doc-tests.
      To ignore some of dependencies, write `package.metadata.cargo-udeps.ignore` in Cargo.toml.
"#,
		stdout_masked,
	);
	Ok(())
}


#[test]
fn with_all_targets() -> CargoResult<()> {
	let (code, stdout_masked) =
		Runner::new("cargo_udeps_test_normal_dev_build_with_all_targets")?
			.cargo_toml(CARGO_TOML)?
			.dir("./src")?
			.file("./src/lib.rs", LIB_RS)?
			.file("./build.rs", BUILD_RS)?
			.arg("--all-targets")
			.run()?;
	assert_eq!(1, code);
	assert_eq!(
		r#"unused dependencies:
`normal_dev_build v0.0.1 (██████████)`
├─── dependencies
│    └─── "if_chain"
├─── dev-dependencies
│    └─── "maplit"
└─── build-dependencies
     └─── "matches"
Note: They might be false-positive.
      For example, `cargo-udeps` cannot detect usage of crates that are only used in doc-tests.
      To ignore some of dependencies, write `package.metadata.cargo-udeps.ignore` in Cargo.toml.
"#,
		stdout_masked,
	);
	Ok(())
}