[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/elpa b6519a5 16/71: Per #446: Add tests for eglot-serve
From: |
João Távora |
Subject: |
[elpa] externals/elpa b6519a5 16/71: Per #446: Add tests for eglot-server-programs |
Date: |
Wed, 16 Dec 2020 11:42:16 -0500 (EST) |
branch: externals/elpa
commit b6519a5c1ba965bbb3b2853318b28da5e5faa811
Author: Dan Davison <dandavison7@gmail.com>
Commit: João Távora <joaotavora@gmail.com>
Per #446: Add tests for eglot-server-programs
The tests use eglot--guess-contact, since that is the only gateway to
that variable's complex semantics.
Co-authored-by: João Távora <joaotavora@gmail.com>
* eglot-tests.el (eglot--guessing-contact): New helper.
(eglot-server-programs-simple-executable): New test.
(eglot-server-programs-executable-multiple-major-modes): New test.
(eglot-server-programs-executable-with-arg): New test.
(eglot-server-programs-executable-with-args-and-autoport): New test.
(eglot-server-programs-host-and-port): New test.
(eglot-server-programs-host-and-port-and-tcp-args): New test.
(eglot-server-programs-class-name-and-plist): New test.
(eglot-server-programs-class-name-and-contact-spec): New test.
(eglot-server-programs-function): New test.
---
eglot-tests.el | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)
diff --git a/eglot-tests.el b/eglot-tests.el
index f2a9b7f..48c3bfd 100644
--- a/eglot-tests.el
+++ b/eglot-tests.el
@@ -880,6 +880,86 @@ pyls prefers autopep over yafp, despite its README stating
the contrary."
(((CodeAction) title command)
(list title command)))))))
+(cl-defmacro eglot--guessing-contact ((guessed-class-sym guessed-contact-sym)
+ &body body)
+ "Bind the result of `eglot--guess-contact' then evaluate BODY."
+ (declare (indent 1) (debug t))
+ `(let ((buffer-file-name "_"))
+ (cl-destructuring-bind
+ (_ _ ,guessed-class-sym ,guessed-contact-sym)
+ (eglot--guess-contact)
+ ,@body)))
+
+(ert-deftest eglot-server-programs-simple-executable ()
+ (let ((eglot-server-programs '((foo-mode "some-executable")))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'eglot-lsp-server))
+ (should (equal guessed-contact '("some-executable"))))))
+
+(ert-deftest eglot-server-programs-executable-multiple-major-modes ()
+ (let ((eglot-server-programs '(((bar-mode foo-mode) "some-executable")))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'eglot-lsp-server))
+ (should (equal guessed-contact '("some-executable"))))))
+
+(ert-deftest eglot-server-programs-executable-with-arg ()
+ (let ((eglot-server-programs '((foo-mode "some-executable" "arg1")))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'eglot-lsp-server))
+ (should (equal guessed-contact '("some-executable" "arg1"))))))
+
+(ert-deftest eglot-server-programs-executable-with-args-and-autoport ()
+ (let ((eglot-server-programs '((foo-mode "some-executable" "arg1"
+ :autoport "arg2")))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'eglot-lsp-server))
+ (should (equal guessed-contact '("some-executable" "arg1"
+ :autoport "arg2"))))))
+
+(ert-deftest eglot-server-programs-host-and-port ()
+ (let ((eglot-server-programs '((foo-mode "somehost.example.com" 7777)))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'eglot-lsp-server))
+ (should (equal guessed-contact '("somehost.example.com" 7777))))))
+
+(ert-deftest eglot-server-programs-host-and-port-and-tcp-args ()
+ (let ((eglot-server-programs '((foo-mode "somehost.example.com" 7777
+ :type network)))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'eglot-lsp-server))
+ (should (equal guessed-contact '("somehost.example.com" 7777
+ :type network))))))
+
+(ert-deftest eglot-server-programs-class-name-and-plist ()
+ (let ((eglot-server-programs '((foo-mode bar-class :init-key init-val)))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'bar-class))
+ (should (equal guessed-contact '(:init-key init-val))))))
+
+(ert-deftest eglot-server-programs-class-name-and-contact-spec ()
+ (let ((eglot-server-programs '((foo-mode bar-class "some-executable" "arg1"
+ :autoport "arg2")))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'bar-class))
+ (should (equal guessed-contact '("some-executable" "arg1"
+ :autoport "arg2"))))))
+
+(ert-deftest eglot-server-programs-function ()
+ (let ((eglot-server-programs '((foo-mode . (lambda (&optional _)
+ '("some-executable")))))
+ (major-mode 'foo-mode))
+ (eglot--guessing-contact (guessed-class guessed-contact)
+ (should (equal guessed-class 'eglot-lsp-server))
+ (should (equal guessed-contact '("some-executable"))))))
+
(provide 'eglot-tests)
;;; eglot-tests.el ends here
- [elpa] externals/elpa 22aa27c 01/71: Close #397: Simplify a bit of code, (continued)
- [elpa] externals/elpa 22aa27c 01/71: Close #397: Simplify a bit of code, João Távora, 2020/12/16
- [elpa] externals/elpa 8900a35 04/71: Prevent "Cant guess python-indent-offset..." messages in tests, João Távora, 2020/12/16
- [elpa] externals/elpa dd48f4a 08/71: * eglot.el (eglot-put-doc-in-help-buffer): Tiny docstring fix., João Távora, 2020/12/16
- [elpa] externals/elpa e5cf30e 09/71: Close #435: create match xrefs when possible, João Távora, 2020/12/16
- [elpa] externals/elpa ad3f049 24/71: Close #417: minimally document relation with project.el, João Távora, 2020/12/16
- [elpa] externals/elpa 2f75da2 28/71: Fix #460: fix "free variable" warning, João Távora, 2020/12/16
- [elpa] externals/elpa 0f57efb 26/71: Simplify bug-reporting instructions, João Távora, 2020/12/16
- [elpa] externals/elpa 91a7cba 33/71: Fix #474, #478: prompt for executable if supplied name does not exist, João Távora, 2020/12/16
- [elpa] externals/elpa 9efe207 05/71: Make curl invocation fail more explicitly in .travis.yml, João Távora, 2020/12/16
- [elpa] externals/elpa 73bc752 11/71: Close #441: shield tests from some user customizations, João Távora, 2020/12/16
- [elpa] externals/elpa b6519a5 16/71: Per #446: Add tests for eglot-server-programs,
João Távora <=
- [elpa] externals/elpa 9bc58df 17/71: Fix #446: unbreak eglot--guess-contact for host-and-port case, João Távora, 2020/12/16
- [elpa] externals/elpa 197984c 27/71: Remove trailing whitespaces, João Távora, 2020/12/16
- [elpa] externals/elpa a0249c8 23/71: Per #437: remap display-local-help (C-h .) to eglot-help-at-point, João Távora, 2020/12/16
- [elpa] externals/elpa ee87519 41/71: Replace uses of project-roots with project-root, João Távora, 2020/12/16
- [elpa] externals/elpa 3b01561 39/71: Close #459: rework computation of string given to Eldoc (again), João Távora, 2020/12/16
- [elpa] externals/elpa bf75312 35/71: Require Xref, Project and Eldoc from GNU ELPA, João Távora, 2020/12/16
- [elpa] externals/elpa 2b16952 44/71: Try to make hover-multiline-doc-locus test pass on Travis, João Távora, 2020/12/16
- [elpa] externals/elpa ac9239b 46/71: Fix small problems around Eglot's help buffer, João Távora, 2020/12/16
- [elpa] externals/elpa 433779d 49/71: * eglot.el (Package-Requires): Require Flymake 1.0.9 and eldoc 1.2.0, João Távora, 2020/12/16
- [elpa] externals/elpa e3ce64a 54/71: Fix #510: use a hash-table for storing resolved completions, João Távora, 2020/12/16