mirror of
https://github.com/rust-lang/rust-clippy
synced 2025-02-17 14:38:46 +00:00
Auto merge of #10391 - ldm0:ldm0_fix_unwrap_in_tests, r=xFrednet
Fix test function checker in `unwrap_used`, `expect_used` After #9686 , `unwrap` and `expect` in integration tests and raw test functions won't be allowed. fixes #10011 fixes #10238 fixes #10264 --- changelog: Fix: [`expect_used`], [`unwrap_used`], [`dbg_macro`], [`print_stdout`], [`print_stderr`]: No longer lint in test functions, if the related configuration is set [#10391](https://github.com/rust-lang/rust-clippy/pull/10391) <!-- changelog_checked -->
This commit is contained in:
commit
b528cc90bc
7 changed files with 38 additions and 14 deletions
|
@ -472,7 +472,7 @@ The maximum size of a file included via `include_bytes!()` or `include_str!()`,
|
||||||
|
|
||||||
|
|
||||||
### allow-expect-in-tests
|
### allow-expect-in-tests
|
||||||
Whether `expect` should be allowed within `#[cfg(test)]`
|
Whether `expect` should be allowed in test functions or `#[cfg(test)]`
|
||||||
|
|
||||||
**Default Value:** `false` (`bool`)
|
**Default Value:** `false` (`bool`)
|
||||||
|
|
||||||
|
@ -480,7 +480,7 @@ Whether `expect` should be allowed within `#[cfg(test)]`
|
||||||
|
|
||||||
|
|
||||||
### allow-unwrap-in-tests
|
### allow-unwrap-in-tests
|
||||||
Whether `unwrap` should be allowed in test cfg
|
Whether `unwrap` should be allowed in test functions or `#[cfg(test)]`
|
||||||
|
|
||||||
**Default Value:** `false` (`bool`)
|
**Default Value:** `false` (`bool`)
|
||||||
|
|
||||||
|
@ -488,7 +488,7 @@ Whether `unwrap` should be allowed in test cfg
|
||||||
|
|
||||||
|
|
||||||
### allow-dbg-in-tests
|
### allow-dbg-in-tests
|
||||||
Whether `dbg!` should be allowed in test functions
|
Whether `dbg!` should be allowed in test functions or `#[cfg(test)]`
|
||||||
|
|
||||||
**Default Value:** `false` (`bool`)
|
**Default Value:** `false` (`bool`)
|
||||||
|
|
||||||
|
@ -496,7 +496,7 @@ Whether `dbg!` should be allowed in test functions
|
||||||
|
|
||||||
|
|
||||||
### allow-print-in-tests
|
### allow-print-in-tests
|
||||||
Whether print macros (ex. `println!`) should be allowed in test functions
|
Whether print macros (ex. `println!`) should be allowed in test functions or `#[cfg(test)]`
|
||||||
|
|
||||||
**Default Value:** `false` (`bool`)
|
**Default Value:** `false` (`bool`)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use clippy_utils::diagnostics::span_lint_and_help;
|
use clippy_utils::diagnostics::span_lint_and_help;
|
||||||
use clippy_utils::is_in_cfg_test;
|
|
||||||
use clippy_utils::ty::is_type_diagnostic_item;
|
use clippy_utils::ty::is_type_diagnostic_item;
|
||||||
|
use clippy_utils::{is_in_cfg_test, is_in_test_function};
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_lint::LateContext;
|
use rustc_lint::LateContext;
|
||||||
use rustc_span::sym;
|
use rustc_span::sym;
|
||||||
|
@ -27,7 +27,7 @@ pub(super) fn check(
|
||||||
|
|
||||||
let method = if is_err { "expect_err" } else { "expect" };
|
let method = if is_err { "expect_err" } else { "expect" };
|
||||||
|
|
||||||
if allow_expect_in_tests && is_in_cfg_test(cx.tcx, expr.hir_id) {
|
if allow_expect_in_tests && (is_in_test_function(cx.tcx, expr.hir_id) || is_in_cfg_test(cx.tcx, expr.hir_id)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use clippy_utils::diagnostics::span_lint_and_help;
|
use clippy_utils::diagnostics::span_lint_and_help;
|
||||||
use clippy_utils::ty::is_type_diagnostic_item;
|
use clippy_utils::ty::is_type_diagnostic_item;
|
||||||
use clippy_utils::{is_in_cfg_test, is_lint_allowed};
|
use clippy_utils::{is_in_cfg_test, is_in_test_function, is_lint_allowed};
|
||||||
use rustc_hir as hir;
|
use rustc_hir as hir;
|
||||||
use rustc_lint::LateContext;
|
use rustc_lint::LateContext;
|
||||||
use rustc_span::sym;
|
use rustc_span::sym;
|
||||||
|
@ -27,7 +27,7 @@ pub(super) fn check(
|
||||||
|
|
||||||
let method_suffix = if is_err { "_err" } else { "" };
|
let method_suffix = if is_err { "_err" } else { "" };
|
||||||
|
|
||||||
if allow_unwrap_in_tests && is_in_cfg_test(cx.tcx, expr.hir_id) {
|
if allow_unwrap_in_tests && (is_in_test_function(cx.tcx, expr.hir_id) || is_in_cfg_test(cx.tcx, expr.hir_id)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -419,19 +419,19 @@ define_Conf! {
|
||||||
(max_include_file_size: u64 = 1_000_000),
|
(max_include_file_size: u64 = 1_000_000),
|
||||||
/// Lint: EXPECT_USED.
|
/// Lint: EXPECT_USED.
|
||||||
///
|
///
|
||||||
/// Whether `expect` should be allowed within `#[cfg(test)]`
|
/// Whether `expect` should be allowed in test functions or `#[cfg(test)]`
|
||||||
(allow_expect_in_tests: bool = false),
|
(allow_expect_in_tests: bool = false),
|
||||||
/// Lint: UNWRAP_USED.
|
/// Lint: UNWRAP_USED.
|
||||||
///
|
///
|
||||||
/// Whether `unwrap` should be allowed in test cfg
|
/// Whether `unwrap` should be allowed in test functions or `#[cfg(test)]`
|
||||||
(allow_unwrap_in_tests: bool = false),
|
(allow_unwrap_in_tests: bool = false),
|
||||||
/// Lint: DBG_MACRO.
|
/// Lint: DBG_MACRO.
|
||||||
///
|
///
|
||||||
/// Whether `dbg!` should be allowed in test functions
|
/// Whether `dbg!` should be allowed in test functions or `#[cfg(test)]`
|
||||||
(allow_dbg_in_tests: bool = false),
|
(allow_dbg_in_tests: bool = false),
|
||||||
/// Lint: PRINT_STDOUT, PRINT_STDERR.
|
/// Lint: PRINT_STDOUT, PRINT_STDERR.
|
||||||
///
|
///
|
||||||
/// Whether print macros (ex. `println!`) should be allowed in test functions
|
/// Whether print macros (ex. `println!`) should be allowed in test functions or `#[cfg(test)]`
|
||||||
(allow_print_in_tests: bool = false),
|
(allow_print_in_tests: bool = false),
|
||||||
/// Lint: RESULT_LARGE_ERR.
|
/// Lint: RESULT_LARGE_ERR.
|
||||||
///
|
///
|
||||||
|
|
|
@ -16,6 +16,18 @@ fn main() {
|
||||||
expect_result();
|
expect_result();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_expect_option() {
|
||||||
|
let opt = Some(0);
|
||||||
|
let _ = opt.expect("");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_expect_result() {
|
||||||
|
let res: Result<u8, ()> = Ok(0);
|
||||||
|
let _ = res.expect("");
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod issue9612 {
|
mod issue9612 {
|
||||||
// should not lint in `#[cfg(test)]` modules
|
// should not lint in `#[cfg(test)]` modules
|
||||||
|
|
|
@ -66,6 +66,12 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test() {
|
||||||
|
let boxed_slice: Box<[u8]> = Box::new([0, 1, 2, 3]);
|
||||||
|
let _ = boxed_slice.get(1).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod issue9612 {
|
mod issue9612 {
|
||||||
// should not lint in `#[cfg(test)]` modules
|
// should not lint in `#[cfg(test)]` modules
|
||||||
|
|
|
@ -188,10 +188,16 @@ LL | let _ = some_vec.get_mut(0..1).unwrap().to_vec();
|
||||||
= help: if you don't want to handle the `None` case gracefully, consider using `expect()` to provide a better panic message
|
= help: if you don't want to handle the `None` case gracefully, consider using `expect()` to provide a better panic message
|
||||||
|
|
||||||
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
|
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
|
||||||
--> $DIR/unwrap_used.rs:84:17
|
--> $DIR/unwrap_used.rs:72:13
|
||||||
|
|
|
||||||
|
LL | let _ = boxed_slice.get(1).unwrap();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&boxed_slice[1]`
|
||||||
|
|
||||||
|
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
|
||||||
|
--> $DIR/unwrap_used.rs:90:17
|
||||||
|
|
|
|
||||||
LL | let _ = Box::new([0]).get(1).unwrap();
|
LL | let _ = Box::new([0]).get(1).unwrap();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&Box::new([0])[1]`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&Box::new([0])[1]`
|
||||||
|
|
||||||
error: aborting due to 27 previous errors
|
error: aborting due to 28 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue