From a7cd125d490295eb24edf43119f3d3511c3dfddd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Sat, 4 Mar 2023 19:14:48 +0000 Subject: [PATCH] More robustly unspoof HOME in Eglot tests (bug#61637) A fair number of LSP servers allow user-local installations instead of system wide installations. Emacs's technique of spoofing the HOME env var to some non-existent or non-home directory during 'make check' breaks these tests. That's because the executables are still found by executable-find, but their invocation will rarely be successful as HOME isn't what they expect it to be. Eglot tests already had a technique for dealing with this, "unspoffing" HOME just for the invocations of LSP server but it stopped working a while back. So make it more robust. Eventually, we'll want to decide wether these local servers should be considered in 'make check' runs at all, or whether there is a way to use them with a spoofed HOME. * test/lisp/progmodes/eglot-tests.el (eglot--call-with-fixture): More robustly unspoof HOME. --- test/lisp/progmodes/eglot-tests.el | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/test/lisp/progmodes/eglot-tests.el b/test/lisp/progmodes/eglot-tests.el index 5d5de59a19a..7a90d68d213 100644 --- a/test/lisp/progmodes/eglot-tests.el +++ b/test/lisp/progmodes/eglot-tests.el @@ -103,22 +103,21 @@ then restored." (set (car spec) (cadr spec))) ((stringp (car spec)) (push spec file-specs)))) (unwind-protect - (let* ((home (getenv "HOME")) - (process-environment + (let* ((process-environment (append `(;; Set XDF_CONFIG_HOME to /dev/null to prevent ;; user-configuration to have an influence on ;; language servers. (See github#441) "XDG_CONFIG_HOME=/dev/null" ;; ... on the flip-side, a similar technique by - ;; Emacs's test makefiles means that HOME is set to - ;; /nonexistent. This breaks some common - ;; installations for LSP servers like pylsp, making - ;; these tests mostly useless, so we hack around it - ;; here with a great big hack. + ;; Emacs's test makefiles means that HOME is + ;; spoofed to /nonexistent, or sometimes /tmp. + ;; This breaks some common installations for LSP + ;; servers like pylsp, rust-analyzer making these + ;; tests mostly useless, so we hack around it here + ;; with a great big hack. ,(format "HOME=%s" - (if (file-exists-p home) home - (format "/home/%s" (getenv "USER"))))) + (expand-file-name (format "~%s" (user-login-name))))) process-environment)) ;; Prevent "Can't guess python-indent-offset ..." messages. (python-indent-guess-indent-offset-verbose . nil) -- 2.39.2