UNNAMEABLE_TEST_ITEMS in rustc_lint_defs::builtin - Rust
Description: The `unnameable_test_items` lint detects `#[test]` functions that are not able to be run by the test harness because they are in a position where they are not nameable.

Skip to main content

## UNNAMEABLE_TEST_ITEMS

# Static UNNAMEABLE_TEST_ITEMS

Source

    pub static UNNAMEABLE_TEST_ITEMS: &Lint

Expand description

The `unnameable_test_items` lint detects `#[test]` functions that are not able to be run by the test harness because they are in a position where they are not nameable.

#### §Example

    fn main() {
        #[test]
        fn foo() {
            // This test will not fail because it does not run.
            assert_eq!(1, 2);
        }
    }

{{produces}}

#### §Explanation

In order for the test harness to run a test, the test function must be located in a position where it can be accessed from the crate root. This generally means it must be defined in a module, and not anywhere else such as inside another function. The compiler previously allowed this without an error, so a lint was added as an alert that a test is not being used. Whether or not this should be allowed has not yet been decided, see RFC 2471 and issue #36629.