branch: externals/urgrep commit 559b2c07cd18ba23cee729b9b1b7f92b6fecc9f5 Author: Jim Porter <jporterb...@gmail.com> Commit: Jim Porter <jporterb...@gmail.com>
Add a unit test for getting the preferred tool on multiple hosts --- urgrep-tests.el | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/urgrep-tests.el b/urgrep-tests.el index 3b83a6c770..47e97fc635 100644 --- a/urgrep-tests.el +++ b/urgrep-tests.el @@ -24,11 +24,25 @@ ;;; Code: -(require 'ert) +;; FIXME: Work around Emacs bug#58265. +(let ((orig-home (getenv "HOME"))) + (require 'ert) + (require 'tramp) + (require 'ert-x) + (setenv "HOME" orig-home)) (unless (fboundp 'always) (defun always (&rest _) t)) +(defun urgrep-tests-remote-accessible-p () + "Return whether a test involving remote files can proceed." + (let ((inhibit-message t)) + (ignore-errors + (and + (file-remote-p ert-remote-temporary-file-directory) + (file-directory-p ert-remote-temporary-file-directory) + (file-writable-p ert-remote-temporary-file-directory))))) + (ert-deftest urgrep-tests-common-prefix () (should (equal (urgrep--common-prefix "foo" "bar") "")) (should (equal (urgrep--common-prefix "bar" "baz") "ba"))) @@ -502,6 +516,30 @@ (should (equal (urgrep--get-prop 'executable-name tool) "gf")) (should (equal urgrep--host-defaults nil))))) +(ert-deftest urgrep-tests-get-tool-remote-host () + (skip-unless (urgrep-tests-remote-accessible-p)) + (connection-local-set-profile-variables + 'urgrep-test-ripgrep + '((urgrep-preferred-tools . (ripgrep)))) + (let ((default-directory ert-remote-temporary-file-directory)) + (connection-local-set-profiles + (connection-local-criteria-for-default-directory) 'urgrep-test-ripgrep)) + (cl-letf (((symbol-function #'executable-find) #'always) + (urgrep--host-defaults nil)) + ;; Get the preferred tool on the local host. + (let ((tool (with-connection-local-variables (urgrep-get-tool)))) + (should (equal (car tool) 'ugrep)) + (should (equal (urgrep--get-prop 'executable-name tool) "ugrep"))) + ;; Now try on a remote host. + (let* ((default-directory ert-remote-temporary-file-directory) + (tool (with-connection-local-variables (urgrep-get-tool)))) + (should (equal (car tool) 'ripgrep)) + (should (equal (urgrep--get-prop 'executable-name tool) "rg"))) + ;; Try again on the local host to make sure it didn't change. + (let ((tool (with-connection-local-variables (urgrep-get-tool)))) + (should (equal (car tool) 'ugrep)) + (should (equal (urgrep--get-prop 'executable-name tool) "ugrep"))))) + (defun urgrep-tests--check-match-at-point () (let* ((line (string-to-number (current-word))) (loc