diff options
| author | bors <bors@rust-lang.org> | 2023-11-30 10:24:16 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-11-30 10:24:16 +0000 |
| commit | 665fd5219a395ece3868cddcfc9cf1283a5eb40f (patch) | |
| tree | 08f6691a743aa1997fe0b2d360d4018d4f5bb49e /tests | |
| parent | 8b0bf6423dfaf5545014db85fcba7bc745beed4c (diff) | |
| parent | 0ba9bf9f9ac8adfdcc1b9e033bb127f199397d2d (diff) | |
| download | rust-665fd5219a395ece3868cddcfc9cf1283a5eb40f.tar.gz rust-665fd5219a395ece3868cddcfc9cf1283a5eb40f.zip | |
Auto merge of #11872 - llogiq:test-attr-in-doctest, r=xFrednet
add lint against unit tests in doctests During RustLab, Alice Ryhl brought to my attention that the Andoid team stumbled over the fact that if one attempts to write a unit test within a doctest, it will be summarily ignored. So this lint should help people wondering why their tests won't run. --- changelog: New lint: [`test_attr_in_doctest`] [#11872](https://github.com/rust-lang/rust-clippy/pull/11872)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/test_attr_in_doctest.rs | 51 | ||||
| -rw-r--r-- | tests/ui/test_attr_in_doctest.stderr | 29 |
2 files changed, 80 insertions, 0 deletions
diff --git a/tests/ui/test_attr_in_doctest.rs b/tests/ui/test_attr_in_doctest.rs new file mode 100644 index 00000000000..4c904f7a09a --- /dev/null +++ b/tests/ui/test_attr_in_doctest.rs @@ -0,0 +1,51 @@ +/// This is a test for `#[test]` in doctests +/// +/// # Examples +/// +/// ``` +/// #[test] +/// fn should_be_linted() { +/// assert_eq!(1, 1); +/// } +/// ``` +/// +/// Make sure we catch multiple tests in one example, +/// and show that we really parse the attr: +/// +/// ``` +/// #[test] +/// fn should_also_be_linted() { +/// #[cfg(test)] +/// assert!(true); +/// } +/// +/// #[test] +/// fn should_be_linted_too() { +/// assert_eq!("#[test]", " +/// #[test] +/// "); +/// } +/// ``` +/// +/// We don't catch examples that aren't run: +/// +/// ```ignore +/// #[test] +/// fn ignored() { todo!() } +/// ``` +/// +/// ```no_run +/// #[test] +/// fn ignored() { todo!() } +/// ``` +/// +/// ```compile_fail +/// #[test] +/// fn ignored() { Err(()) } +/// ``` +/// +/// ```txt +/// #[test] +/// fn not_even_rust() { panic!("Ouch") } +/// ``` +fn test_attr_in_doctests() {} diff --git a/tests/ui/test_attr_in_doctest.stderr b/tests/ui/test_attr_in_doctest.stderr new file mode 100644 index 00000000000..605259f3bfb --- /dev/null +++ b/tests/ui/test_attr_in_doctest.stderr @@ -0,0 +1,29 @@ +error: unit tests in doctest are not executed + --> $DIR/test_attr_in_doctest.rs:6:5 + | +LL | /// #[test] + | _____^ +LL | | /// fn should_be_linted() { + | |_______________________^ + | + = note: `-D clippy::test-attr-in-doctest` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(clippy::test_attr_in_doctest)]` + +error: unit tests in doctest are not executed + --> $DIR/test_attr_in_doctest.rs:16:5 + | +LL | /// #[test] + | _____^ +LL | | /// fn should_also_be_linted() { + | |____________________________^ + +error: unit tests in doctest are not executed + --> $DIR/test_attr_in_doctest.rs:22:5 + | +LL | /// #[test] + | _____^ +LL | | /// fn should_be_linted_too() { + | |___________________________^ + +error: aborting due to 3 previous errors + |
