rust-clippy/tests/ui/missing_assert_message.rs
2023-08-22 17:18:11 +02:00

99 lines
2.6 KiB
Rust

#![allow(unused)]
#![warn(clippy::missing_assert_message)]
macro_rules! bar {
($( $x:expr ),*) => {
foo()
};
}
// Should trigger warning
fn asserts_without_message() {
assert!(foo());
//~^ ERROR: assert without any message
assert_eq!(foo(), foo());
//~^ ERROR: assert without any message
assert_ne!(foo(), foo());
//~^ ERROR: assert without any message
debug_assert!(foo());
//~^ ERROR: assert without any message
debug_assert_eq!(foo(), foo());
//~^ ERROR: assert without any message
debug_assert_ne!(foo(), foo());
//~^ ERROR: assert without any message
}
// Should trigger warning
fn asserts_without_message_but_with_macro_calls() {
assert!(bar!(true));
//~^ ERROR: assert without any message
assert!(bar!(true, false));
//~^ ERROR: assert without any message
assert_eq!(bar!(true), foo());
//~^ ERROR: assert without any message
assert_ne!(bar!(true, true), bar!(true));
//~^ ERROR: assert without any message
}
// Should trigger warning
fn asserts_with_trailing_commas() {
assert!(foo(),);
//~^ ERROR: assert without any message
assert_eq!(foo(), foo(),);
//~^ ERROR: assert without any message
assert_ne!(foo(), foo(),);
//~^ ERROR: assert without any message
debug_assert!(foo(),);
//~^ ERROR: assert without any message
debug_assert_eq!(foo(), foo(),);
//~^ ERROR: assert without any message
debug_assert_ne!(foo(), foo(),);
//~^ ERROR: assert without any message
}
// Should not trigger warning
fn asserts_with_message_and_with_macro_calls() {
assert!(bar!(true), "msg");
assert!(bar!(true, false), "msg");
assert_eq!(bar!(true), foo(), "msg");
assert_ne!(bar!(true, true), bar!(true), "msg");
}
// Should not trigger warning
fn asserts_with_message() {
assert!(foo(), "msg");
assert_eq!(foo(), foo(), "msg");
assert_ne!(foo(), foo(), "msg");
debug_assert!(foo(), "msg");
debug_assert_eq!(foo(), foo(), "msg");
debug_assert_ne!(foo(), foo(), "msg");
}
// Should not trigger warning
#[test]
fn asserts_without_message_but_inside_a_test_function() {
assert!(foo());
assert_eq!(foo(), foo());
assert_ne!(foo(), foo());
debug_assert!(foo());
debug_assert_eq!(foo(), foo());
debug_assert_ne!(foo(), foo());
}
fn foo() -> bool {
true
}
// Should not trigger warning
#[cfg(test)]
mod tests {
use super::foo;
fn asserts_without_message_but_inside_a_test_module() {
assert!(foo());
assert_eq!(foo(), foo());
assert_ne!(foo(), foo());
debug_assert!(foo());
debug_assert_eq!(foo(), foo());
debug_assert_ne!(foo(), foo());
}
}