[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master d3ab5f68773 2/3: Robustify some Eglot tests involving rust-analyz
From: |
João Távora |
Subject: |
master d3ab5f68773 2/3: Robustify some Eglot tests involving rust-analyzer |
Date: |
Tue, 14 Mar 2023 19:39:02 -0400 (EDT) |
branch: master
commit d3ab5f68773d70eb9e0a2396975583bf14453f40
Author: João Távora <joaotavora@gmail.com>
Commit: João Távora <joaotavora@gmail.com>
Robustify some Eglot tests involving rust-analyzer
* eglot-tests.el (eglot-test-diagnostics-tags-unnecessary-code): Use
clangd instead of rust-analyzer.
(eglot-test-project-wide-diagnostics-rust-analyzer): Don't count
diagnostics, just check they come from unvisited file.
(eglot-test-rust-analyzer-watches-files): Wait a bit more time..
---
test/lisp/progmodes/eglot-tests.el | 39 ++++++++++++++++++++------------------
1 file changed, 21 insertions(+), 18 deletions(-)
diff --git a/test/lisp/progmodes/eglot-tests.el
b/test/lisp/progmodes/eglot-tests.el
index 9cb6befa993..4d6af79f87f 100644
--- a/test/lisp/progmodes/eglot-tests.el
+++ b/test/lisp/progmodes/eglot-tests.el
@@ -407,7 +407,7 @@ Pass TIMEOUT to `eglot--with-timeout'."
)
(should (eglot--tests-connect))
(let (register-id)
- (eglot--wait-for (s-requests 1)
+ (eglot--wait-for (s-requests 3)
(&key id method &allow-other-keys)
(setq register-id id)
(string= method "client/registerCapability"))
@@ -444,16 +444,19 @@ Pass TIMEOUT to `eglot--with-timeout'."
(ert-deftest eglot-test-diagnostic-tags-unnecessary-code ()
"Test rendering of diagnostics tagged \"unnecessary\"."
- (skip-unless (executable-find "rust-analyzer"))
- (skip-unless (executable-find "cargo"))
+ (skip-unless (executable-find "clangd"))
(eglot--with-fixture
- '(("diagnostic-tag-project" .
- (("main.rs" .
- "fn main() -> () { let test=3; }"))))
+ `(("diag-project" .
+ (("main.cpp" . "int main(){float a = 42.2; return 0;}"))))
(with-current-buffer
- (eglot--find-file-noselect "diagnostic-tag-project/main.rs")
- (let ((eglot-server-programs '((rust-mode . ("rust-analyzer")))))
- (should (zerop (shell-command "cargo init")))
+ (eglot--find-file-noselect "diag-project/main.cpp")
+ (eglot--make-file-or-dir '(".git"))
+ (eglot--make-file-or-dir
+ `("compile_commands.json" .
+ ,(json-serialize
+ `[(:directory ,default-directory :command "/usr/bin/c++ -Wall -c
main.cpp"
+ :file ,(expand-file-name "main.cpp"))])))
+ (let ((eglot-server-programs '((c++-mode . ("clangd")))))
(eglot--sniffing (:server-notifications s-notifs)
(eglot--tests-connect)
(eglot--wait-for (s-notifs 10)
@@ -803,12 +806,13 @@ pylsp prefers autopep over yafp, despite its README
stating the contrary."
(eglot--with-fixture
'(("project" .
(("main.rs" .
- "fn main() -> () { let test=3; }")
+ "fn main() -> i32 { return 42.2;}")
("other-file.rs" .
"fn foo() -> () { let hi=3; }"))))
(eglot--make-file-or-dir '(".git"))
(let ((eglot-server-programs '((rust-mode . ("rust-analyzer")))))
- ;; Open other-file, and see diagnostics arrive for main.rs
+ ;; Open other-file.rs, and see diagnostics arrive for main.rs,
+ ;; which we didn't open.
(with-current-buffer (eglot--find-file-noselect "project/other-file.rs")
(should (zerop (shell-command "cargo init")))
(eglot--sniffing (:server-notifications s-notifs)
@@ -817,13 +821,12 @@ pylsp prefers autopep over yafp, despite its README
stating the contrary."
(eglot--wait-for (s-notifs 10)
(&key _id method &allow-other-keys)
(string= method "textDocument/publishDiagnostics"))
- (let ((diags (flymake--project-diagnostics)))
- (should (= 2 (length diags)))
- ;; Check that we really get a diagnostic from main.rs, and
- ;; not from other-file.rs
- (should (string-suffix-p
- "main.rs"
- (flymake-diagnostic-buffer (car diags))))))))))
+ (let* ((diags (flymake--project-diagnostics)))
+ (should (cl-some (lambda (diag)
+ (let ((locus (flymake-diagnostic-buffer diag)))
+ (and (stringp (flymake-diagnostic-buffer
diag))
+ (string-suffix-p "main.rs" locus))))
+ diags))))))))
(ert-deftest eglot-test-json-basic ()
"Test basic autocompletion in vscode-json-languageserver."