branch: elpa/flycheck
commit 0e18f7fba13aa0436bdd952f06a0b7ab54ed1cd1
Author: Bozhidar Batsov <[email protected]>
Commit: Bozhidar Batsov <[email protected]>

    Update Rust test expectations for current compiler and add clippy test
    
    Update all rust-cargo and rust checker test expectations to match
    Rust 1.91 output: changed message formats, note grouping, and new
    diagnostics. Add fn main() to standalone test files to avoid flaky
    E0601 errors. Add a new rust-clippy checker test.
---
 .../resources/language/rust/clippy-test/Cargo.toml |   3 +
 .../language/rust/clippy-test/src/main.rs          |   7 ++
 .../language/rust/flycheck-test/src/macro-error.rs |   2 +-
 .../rust/flycheck-test/src/multiline-error.rs      |   2 +-
 .../language/rust/standalone-importing.rs          |   4 +
 test/specs/languages/test-rust.el                  | 121 ++++++++++-----------
 6 files changed, 72 insertions(+), 67 deletions(-)

diff --git a/test/resources/language/rust/clippy-test/Cargo.toml 
b/test/resources/language/rust/clippy-test/Cargo.toml
new file mode 100644
index 0000000000..b08fbe6ff9
--- /dev/null
+++ b/test/resources/language/rust/clippy-test/Cargo.toml
@@ -0,0 +1,3 @@
+[package]
+name = "clippy-test"
+version = "0.1.0"
diff --git a/test/resources/language/rust/clippy-test/src/main.rs 
b/test/resources/language/rust/clippy-test/src/main.rs
new file mode 100644
index 0000000000..5b0932ef03
--- /dev/null
+++ b/test/resources/language/rust/clippy-test/src/main.rs
@@ -0,0 +1,7 @@
+fn returns_true() -> bool {
+    return true;
+}
+
+fn main() {
+    let _ = returns_true();
+}
diff --git a/test/resources/language/rust/flycheck-test/src/macro-error.rs 
b/test/resources/language/rust/flycheck-test/src/macro-error.rs
index c2506bd5f1..a0013fb017 100644
--- a/test/resources/language/rust/flycheck-test/src/macro-error.rs
+++ b/test/resources/language/rust/flycheck-test/src/macro-error.rs
@@ -1,3 +1,3 @@
-fn foo() {
+fn main() {
   println!("{}");
 }
diff --git a/test/resources/language/rust/flycheck-test/src/multiline-error.rs 
b/test/resources/language/rust/flycheck-test/src/multiline-error.rs
index 930b8c8feb..58d84009b9 100644
--- a/test/resources/language/rust/flycheck-test/src/multiline-error.rs
+++ b/test/resources/language/rust/flycheck-test/src/multiline-error.rs
@@ -2,7 +2,7 @@ fn foo(bar: u8) -> u8 {
     bar + 1
 }
 
-fn spam() {
+fn main() {
     let i: i8 = -1;
     foo(i);
 }
diff --git a/test/resources/language/rust/standalone-importing.rs 
b/test/resources/language/rust/standalone-importing.rs
new file mode 100644
index 0000000000..92b688611b
--- /dev/null
+++ b/test/resources/language/rust/standalone-importing.rs
@@ -0,0 +1,4 @@
+use super::nonexistent;
+fn main() {
+    println!("hey {}", nonexistent::BAR);
+}
diff --git a/test/specs/languages/test-rust.el 
b/test/specs/languages/test-rust.el
index e223257ca6..da00384793 100644
--- a/test/specs/languages/test-rust.el
+++ b/test/specs/languages/test-rust.el
@@ -35,10 +35,10 @@
       (flycheck-buttercup-cargo-clean "language/rust/flycheck-test/Cargo.toml")
       (flycheck-buttercup-should-syntax-check
        "language/rust/flycheck-test/src/warnings.rs" 'rust-mode
-       '(3 4 warning "function is never used: `main`"
+       '(3 4 warning "function `main` is never used"
            :checker rust-cargo :id "dead_code" :group 1
            :end-line 3 :end-column 8)
-       '(3 4 info "`#[warn(dead_code)]` on by default"
+       '(3 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by 
default"
            :checker rust-cargo :id "dead_code" :group 1
            :end-line 3 :end-column 8)
        '(4 9 warning "unused variable: `x`"
@@ -55,10 +55,10 @@
       (flycheck-buttercup-cargo-clean "language/rust/flycheck-test/Cargo.toml")
       (flycheck-buttercup-should-syntax-check
        "language/rust/flycheck-test/src/warnings.rs" 'rust-mode
-       '(3 4 warning "function is never used: `main`"
+       '(3 4 warning "function `main` is never used"
            :checker rust-cargo :id "dead_code" :group 1
            :end-line 3 :end-column 8)
-       '(3 4 info "`#[warn(dead_code)]` on by default"
+       '(3 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by 
default"
            :checker rust-cargo :id "dead_code" :group 1
            :end-line 3 :end-column 8)
        '(4 9 warning "unused variable: `x`"
@@ -86,35 +86,20 @@
         (flycheck-buttercup-cargo-clean 
"language/rust/cargo-targets/Cargo.toml")
         (flycheck-buttercup-should-syntax-check
          "language/rust/cargo-targets/src/lib.rs" 'rust-mode
-         '(3 4 warning "function is never used: `foo_lib`"
+         '(3 4 warning "function `foo_lib` is never used"
              :checker rust-cargo :id "dead_code" :group 1
              :end-line 3 :end-column 11)
-         '(6 17 warning "unused variable: `foo_lib_test`"
-             :checker rust-cargo  :id "unused_variables" :group 2
-             :end-line 6 :end-column 29)
-         '(6 17 info "`#[warn(unused_variables)]` on by default"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 6 :end-column 29)
-         '(6 17 info "if this is intentional, prefix it with an underscore: 
`_foo_lib_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 6 :end-column 29)))
+         '(3 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by 
default"
+             :checker rust-cargo :id "dead_code" :group 1
+             :end-line 3 :end-column 11)))
 
       (let ((flycheck-rust-crate-type "lib"))
         (flycheck-buttercup-cargo-clean 
"language/rust/cargo-targets/Cargo.toml")
         (flycheck-buttercup-should-syntax-check
          "language/rust/cargo-targets/src/a.rs" 'rust-mode
-         '(1 4 warning "function is never used: `foo_a`"
+         '(1 4 warning "function `foo_a` is never used"
              :checker rust-cargo :id "dead_code" :group 1
-             :end-line 1 :end-column 9)
-         '(1 4 info "`#[warn(dead_code)]` on by default"
-             :checker rust-cargo :id "dead_code" :group 1
-             :end-line 1 :end-column 9)
-         '(4 17 warning "unused variable: `foo_a_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 27)
-         '(4 17 info "if this is intentional, prefix it with an underscore: 
`_foo_a_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 27)))
+             :end-line 1 :end-column 9)))
 
       (let ((flycheck-rust-crate-type "bin")
             (flycheck-rust-binary-name "cargo-targets"))
@@ -124,18 +109,12 @@
          '(1 17 warning "unused variable: `foo_main`"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 25)
-         '(1 17 info "`#[warn(unused_variables)]` on by default"
+         '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) 
on by default"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 25)
          '(1 17 info "if this is intentional, prefix it with an underscore: 
`_foo_main`"
              :checker rust-cargo :id "unused_variables" :group 1
-             :end-line 1 :end-column 25)
-         '(4 17 warning "unused variable: `foo_main_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 30)
-         '(4 17 info "if this is intentional, prefix it with an underscore: 
`_foo_main_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 30)))
+             :end-line 1 :end-column 25)))
 
       (let ((flycheck-rust-crate-type "bin")
             (flycheck-rust-binary-name "a"))
@@ -145,18 +124,12 @@
          '(1 17 warning "unused variable: `foo_bin_a`"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 26)
-         '(1 17 info "`#[warn(unused_variables)]` on by default"
+         '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) 
on by default"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 26)
          '(1 17 info "if this is intentional, prefix it with an underscore: 
`_foo_bin_a`"
              :checker rust-cargo :id "unused_variables" :group 1
-             :end-line 1 :end-column 26)
-         '(4 17 warning "unused variable: `foo_bin_a_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 31)
-         '(4 17 info "if this is intentional, prefix it with an underscore: 
`_foo_bin_a_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 31)))
+             :end-line 1 :end-column 26)))
 
       (let ((flycheck-rust-crate-type "bench")
             (flycheck-rust-binary-name "a"))
@@ -166,7 +139,7 @@
          '(1 17 warning "unused variable: `foo_bench_a`"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 28)
-         '(1 17 info "`#[warn(unused_variables)]` on by default"
+         '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) 
on by default"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 28)
          '(1 17 info "if this is intentional, prefix it with an underscore: 
`_foo_bench_a`"
@@ -187,16 +160,16 @@
          '(2 16 warning "unused variable: `foo_test_a_test`"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 2 :end-column 31)
-         '(2 16 info "`#[warn(unused_variables)]` on by default"
+         '(2 16 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) 
on by default"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 2 :end-column 31)
          '(2 16 info "if this is intentional, prefix it with an underscore: 
`_foo_test_a_test`"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 2 :end-column 31)
-         '(4 4 warning "function is never used: `foo_test_a`"
+         '(4 4 warning "function `foo_test_a` is never used"
              :checker rust-cargo :id "dead_code" :group 2
              :end-line 4 :end-column 14)
-         '(4 4 info "`#[warn(dead_code)]` on by default"
+         '(4 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by 
default"
              :checker rust-cargo :id "dead_code" :group 2
              :end-line 4 :end-column 14)))
 
@@ -208,18 +181,12 @@
          '(1 17 warning "unused variable: `foo_ex_a`"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 25)
-         '(1 17 info "`#[warn(unused_variables)]` on by default"
+         '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) 
on by default"
              :checker rust-cargo :id "unused_variables" :group 1
              :end-line 1 :end-column 25)
          '(1 17 info "if this is intentional, prefix it with an underscore: 
`_foo_ex_a`"
              :checker rust-cargo :id "unused_variables" :group 1
-             :end-line 1 :end-column 25)
-         '(4 17 warning "unused variable: `foo_ex_a_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 30)
-         '(4 17 info "if this is intentional, prefix it with an underscore: 
`_foo_ex_a_test`"
-             :checker rust-cargo :id "unused_variables" :group 2
-             :end-line 4 :end-column 30)))))
+             :end-line 1 :end-column 25)))))
 
   (flycheck-buttercup-def-checker-test rust-cargo rust workspace-subcrate
     (let ((flycheck-disabled-checkers '(rust))
@@ -231,7 +198,7 @@
        '(2 7 warning "unused variable: `a`"
            :checker rust-cargo :id "unused_variables" :group 1
            :end-line 2 :end-column 8)
-       '(2 7 info "`#[warn(unused_variables)]` on by default"
+       '(2 7 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on 
by default"
            :checker rust-cargo :id "unused_variables" :group 1
            :end-line 2 :end-column 8)
        '(2 7 info "if this is intentional, prefix it with an underscore: `_a`"
@@ -248,13 +215,13 @@
        '(2 1 warning "unused `#[macro_use]` import"
            :checker rust-cargo :id "unused_imports" :group 1
            :end-line 2 :end-column 13)
-       '(2 1 info "`#[warn(unused_imports)]` on by default"
+       '(2 1 info "`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by 
default"
            :checker rust-cargo :id "unused_imports" :group 1
            :end-line 2 :end-column 13)
        '(8 9 warning "unused variable: `foo`"
            :checker rust-cargo :id "unused_variables" :group 2
            :end-line 8 :end-column 12)
-       '(8 9 info "`#[warn(unused_variables)]` on by default"
+       '(8 9 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on 
by default"
            :checker rust-cargo :id "unused_variables" :group 2
            :end-line 8 :end-column 12)
        '(8 9 info "if this is intentional, prefix it with an underscore: 
`_foo`"
@@ -272,10 +239,16 @@
     (let ((flycheck-disabled-checkers '(rust-cargo)))
       (flycheck-buttercup-should-syntax-check
        "language/rust/flycheck-test/src/multiline-error.rs" 'rust-mode
+       '(1 8 info "function defined here"
+           :checker rust :id "E0308" :group 1
+           :end-line 1 :end-column 15)
+       '(7 5 info "arguments to this function are incorrect"
+           :checker rust :id "E0308" :group 1
+           :end-line 7 :end-column 8)
        '(7 9 error "mismatched types (expected `u8`, found `i8`)"
            :checker rust :id "E0308" :group 1
            :end-line 7 :end-column 10)
-       '(7 9 info "you can convert an `i8` to a `u8` and panic if the 
converted value doesn't fit: `i.try_into().unwrap()`"
+       '(7 10 info "you can convert an `i8` to a `u8` and panic if the 
converted value doesn't fit: `.try_into().unwrap()`"
            :checker rust :id "E0308" :group 1
            :end-line 7 :end-column 10))))
 
@@ -286,7 +259,7 @@
        '(4 9 warning "unused variable: `x`"
            :checker rust :id "unused_variables" :group 1
            :end-line 4 :end-column 10)
-       '(4 9 info "`#[warn(unused_variables)]` on by default"
+       '(4 9 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on 
by default"
            :checker rust :id "unused_variables" :group 1
            :end-line 4 :end-column 10)
        '(4 9 info "if this is intentional, prefix it with an underscore: `_x`"
@@ -297,6 +270,9 @@
     (let ((flycheck-disabled-checkers '(rust-cargo)))
       (flycheck-buttercup-should-syntax-check
        "language/rust/flycheck-test/src/note-and-help.rs" 'rust-mode
+       '(4 1 info "if `NonPOD` implemented `Clone`, you could clone the value"
+            :checker rust :id "E0382" :group 1
+            :end-line 4 :end-column 14)
        '(10 9 info "move occurs because `_x` has type `NonPOD`, which does not 
implement the `Copy` trait"
             :checker rust :id "E0382" :group 1
             :end-line 10 :end-column 11)
@@ -310,13 +286,10 @@
   (flycheck-buttercup-def-checker-test rust rust crate-root-not-set
     (let ((flycheck-disabled-checkers '(rust-cargo)))
       (flycheck-buttercup-should-syntax-check
-       "language/rust/flycheck-test/src/importing.rs" 'rust-mode
+       "language/rust/standalone-importing.rs" 'rust-mode
        '(1 5 error "failed to resolve: there are too many leading `super` 
keywords (there are too many leading `super` keywords)"
-           :checker rust :id "E0433" :group 2
-           :end-line 1 :end-column 10)
-       '(4 24 error "failed to resolve: use of undeclared crate or module 
`imported` (use of undeclared crate or module `imported`)"
-           :checker rust :id "E0433" :group 3
-           :end-line 4 :end-column 32))))
+           :checker rust :id "E0433" :group 1
+           :end-line 1 :end-column 10))))
 
   (flycheck-buttercup-def-checker-test rust rust macro-error
     (let ((flycheck-disabled-checkers '(rust-cargo)))
@@ -324,6 +297,24 @@
        "language/rust/flycheck-test/src/macro-error.rs" 'rust-mode
        '(2 13 error "1 positional argument in format string, but no arguments 
were given"
            :checker rust :group 1
-           :end-line 2 :end-column 15)))))
+           :end-line 2 :end-column 15))))
+
+  (flycheck-buttercup-def-checker-test rust-clippy rust default
+    (let ((flycheck-disabled-checkers '(rust rust-cargo)))
+      (flycheck-buttercup-cargo-clean "language/rust/clippy-test/Cargo.toml")
+      (flycheck-buttercup-should-syntax-check
+       "language/rust/clippy-test/src/main.rs" 'rust-mode
+       '(2 5 warning "unneeded `return` statement"
+           :checker rust-clippy :id "clippy::needless_return" :group 1
+           :end-line 2 :end-column 16)
+       '(2 5 info "for further information visit 
https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#needless_return";
+           :checker rust-clippy :id "clippy::needless_return" :group 1
+           :end-line 2 :end-column 16)
+       '(2 5 info "`#[warn(clippy::needless_return)]` on by default"
+           :checker rust-clippy :id "clippy::needless_return" :group 1
+           :end-line 2 :end-column 16)
+       '(2 5 info "remove `return`: `true`"
+           :checker rust-clippy :id "clippy::needless_return" :group 1
+           :end-line 2 :end-column 16)))))
 
 ;;; test-rust.el ends here

Reply via email to