Fix Python shell completion test failures
* test/lisp/progmodes/python-tests.el (python-tests-with-temp-buffer-with-shell): Set XDG_CACHE_HOME to a temporary directory. (python-tests--pythonstartup-file): New function. (python-shell-completion-at-point-jedi-completer) (python-shell-completion-at-point-ipython): Use Jedi as the native completion backend when possible. (bug#68559)
This commit is contained in:
parent
3412b64ac8
commit
8a2d013be3
1 changed files with 53 additions and 34 deletions
|
@ -55,21 +55,27 @@ BODY is code to be executed within the temp buffer. Point is
|
|||
always located at the beginning of buffer. Native completion is
|
||||
turned off. Shell buffer will be killed on exit."
|
||||
(declare (indent 1) (debug t))
|
||||
`(with-temp-buffer
|
||||
(let ((python-indent-guess-indent-offset nil)
|
||||
(python-shell-completion-native-enable nil))
|
||||
(python-mode)
|
||||
(unwind-protect
|
||||
(progn
|
||||
(run-python nil t)
|
||||
(insert ,contents)
|
||||
(goto-char (point-min))
|
||||
(python-tests-shell-wait-for-prompt)
|
||||
,@body)
|
||||
(when (python-shell-get-buffer)
|
||||
(python-shell-with-shell-buffer
|
||||
(let (kill-buffer-hook kill-buffer-query-functions)
|
||||
(kill-buffer))))))))
|
||||
(let ((dir (make-symbol "dir")))
|
||||
`(with-temp-buffer
|
||||
(let ((python-indent-guess-indent-offset nil)
|
||||
(python-shell-completion-native-enable nil))
|
||||
(python-mode)
|
||||
(unwind-protect
|
||||
;; Prevent test failures when Jedi is used as a completion
|
||||
;; backend, either directly or indirectly (e.g., via
|
||||
;; IPython). Jedi needs to store cache, but the
|
||||
;; "/nonexistent" HOME directory is not writable.
|
||||
(ert-with-temp-directory ,dir
|
||||
(with-environment-variables (("XDG_CACHE_HOME" ,dir))
|
||||
(run-python nil t)
|
||||
(insert ,contents)
|
||||
(goto-char (point-min))
|
||||
(python-tests-shell-wait-for-prompt)
|
||||
,@body))
|
||||
(when (python-shell-get-buffer)
|
||||
(python-shell-with-shell-buffer
|
||||
(let (kill-buffer-hook kill-buffer-query-functions)
|
||||
(kill-buffer)))))))))
|
||||
|
||||
(defmacro python-tests-with-temp-file (contents &rest body)
|
||||
"Create a `python-mode' enabled file with CONTENTS.
|
||||
|
@ -4860,17 +4866,28 @@ def foo():
|
|||
(should (string= "IGNORECASE"
|
||||
(buffer-substring (line-beginning-position) (point)))))
|
||||
|
||||
(defun python-tests--pythonstartup-file ()
|
||||
"Return Jedi readline setup file if PYTHONSTARTUP is not set."
|
||||
(or (getenv "PYTHONSTARTUP")
|
||||
(with-temp-buffer
|
||||
(if (eql 0 (call-process python-tests-shell-interpreter
|
||||
nil t nil "-m" "jedi" "repl"))
|
||||
(string-trim (buffer-string))
|
||||
""))))
|
||||
|
||||
(ert-deftest python-shell-completion-at-point-jedi-completer ()
|
||||
"Check if Python shell completion works when Jedi completer is used."
|
||||
(skip-unless (executable-find python-tests-shell-interpreter))
|
||||
(python-tests-with-temp-buffer-with-shell
|
||||
""
|
||||
(python-shell-with-shell-buffer
|
||||
(python-shell-completion-native-turn-on)
|
||||
(skip-unless (string= python-shell-readline-completer-delims ""))
|
||||
(python-tests--completion-module)
|
||||
(python-tests--completion-parameters)
|
||||
(python-tests--completion-extra-context))))
|
||||
(with-environment-variables
|
||||
(("PYTHONSTARTUP" (python-tests--pythonstartup-file)))
|
||||
(python-tests-with-temp-buffer-with-shell
|
||||
""
|
||||
(python-shell-with-shell-buffer
|
||||
(python-shell-completion-native-turn-on)
|
||||
(skip-unless (string= python-shell-readline-completer-delims ""))
|
||||
(python-tests--completion-module)
|
||||
(python-tests--completion-parameters)
|
||||
(python-tests--completion-extra-context)))))
|
||||
|
||||
(ert-deftest python-shell-completion-at-point-ipython ()
|
||||
"Check if Python shell completion works for IPython."
|
||||
|
@ -4880,17 +4897,19 @@ def foo():
|
|||
(and
|
||||
(executable-find python-shell-interpreter)
|
||||
(eql (call-process python-shell-interpreter nil nil nil "--version") 0)))
|
||||
(python-tests-with-temp-buffer-with-shell
|
||||
""
|
||||
(python-shell-with-shell-buffer
|
||||
(python-shell-completion-native-turn-off)
|
||||
(python-tests--completion-module)
|
||||
(python-tests--completion-parameters)
|
||||
(python-shell-completion-native-turn-on)
|
||||
(skip-unless (string= python-shell-readline-completer-delims ""))
|
||||
(python-tests--completion-module)
|
||||
(python-tests--completion-parameters)
|
||||
(python-tests--completion-extra-context)))))
|
||||
(with-environment-variables
|
||||
(("PYTHONSTARTUP" (python-tests--pythonstartup-file)))
|
||||
(python-tests-with-temp-buffer-with-shell
|
||||
""
|
||||
(python-shell-with-shell-buffer
|
||||
(python-shell-completion-native-turn-off)
|
||||
(python-tests--completion-module)
|
||||
(python-tests--completion-parameters)
|
||||
(python-shell-completion-native-turn-on)
|
||||
(skip-unless (string= python-shell-readline-completer-delims ""))
|
||||
(python-tests--completion-module)
|
||||
(python-tests--completion-parameters)
|
||||
(python-tests--completion-extra-context))))))
|
||||
|
||||
|
||||
;;; PDB Track integration
|
||||
|
|
Loading…
Add table
Reference in a new issue