| //! Checks `--explain` against the forms of a lint name a user may actually type. |
| //! |
| //! `src/main.rs` lowercases the argument, strips a `clippy::` prefix and replaces |
| //! `-` with `_` before `clippy_lints::explain` looks the name up in its uppercase |
| //! form. Calling `explain` directly would leave that conversion untested. |
| //! |
| //! This test is a no-op if run as part of the compiler test suite |
| //! and will always succeed. |
| |
| use std::process::{Command, Stdio}; |
| use test_utils::{CARGO_CLIPPY_PATH, IS_RUSTC_TEST_SUITE}; |
| |
| mod test_utils; |
| |
| #[test] |
| fn explain() { |
| if IS_RUSTC_TEST_SUITE { |
| return; |
| } |
| |
| let running = [ |
| ("allow-attributes", true), |
| ("clippy::allow_attributes", true), |
| ("TOPLEVEL_REF_ARG", true), |
| ("CLIPPY::TOPLEVEL_REF_ARG", true), |
| ("not_a_lint", false), |
| ] |
| .map(|(arg, found)| { |
| let child = Command::new(&*CARGO_CLIPPY_PATH) |
| .args(["--explain", arg]) |
| .stdout(Stdio::null()) |
| .spawn() |
| .unwrap(); |
| (arg, found, child) |
| }); |
| |
| for (arg, found, mut child) in running { |
| assert_eq!( |
| child.wait().unwrap().success(), |
| found, |
| "unexpected result for `--explain {arg}`" |
| ); |
| } |
| } |