mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-03 11:33:37 +00:00
Add test for handling environment variables in Tramp
* test/automatedtramp-tests.el (tramp-test--shell-command-to-string-asynchronously): New defun. (tramp-test29-environment-variables): New test. (tramp-test30-vc-registered) (tramp-test31-make-auto-save-file-name) (tramp-test32-special-characters) (tramp-test32-special-characters-with-stat) (tramp-test32-special-characters-with-perl) (tramp-test32-special-characters-with-ls, tramp-test33-utf8) (tramp-test33-utf8-with-stat, tramp-test33-utf8-with-perl) (tramp-test33-utf8-with-ls) (tramp-test34-asynchronous-requests) (tramp-test35-recursive-load, tramp-test36-unload): Rename.
This commit is contained in:
parent
e393d4f4ce
commit
05ba7a0f83
@ -1598,7 +1598,103 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
|
||||
;; Cleanup.
|
||||
(ignore-errors (delete-file tmp-name)))))
|
||||
|
||||
(ert-deftest tramp-test29-vc-registered ()
|
||||
(defun tramp-test--shell-command-to-string-asynchronously (command)
|
||||
"Like `shell-command-to-string', but for asynchronous processes."
|
||||
(with-temp-buffer
|
||||
(async-shell-command command (current-buffer))
|
||||
;; Suppress nasty messages.
|
||||
(set-process-sentinel (get-buffer-process (current-buffer)) nil)
|
||||
(while
|
||||
(and (get-buffer-process (current-buffer))
|
||||
(eq (process-status (get-buffer-process (current-buffer))) 'run))
|
||||
(accept-process-output (get-buffer-process (current-buffer)) 1))
|
||||
(buffer-substring-no-properties (point-min) (point-max))))
|
||||
|
||||
;; This test is inspired by Bug#23952.
|
||||
(ert-deftest tramp-test29-environment-variables ()
|
||||
"Check that remote processes set / unset environment variables properly."
|
||||
:tags '(:expensive-test)
|
||||
(skip-unless (tramp--test-enabled))
|
||||
(skip-unless
|
||||
(eq
|
||||
(tramp-find-foreign-file-name-handler tramp-test-temporary-file-directory)
|
||||
'tramp-sh-file-name-handler))
|
||||
|
||||
;; Implementation note: There is a "sleep 1" at the end of every
|
||||
;; test. Otherwise, the scripts could return too early, without
|
||||
;; expected output.
|
||||
(dolist (this-shell-command-to-string
|
||||
'(;; Synchronously.
|
||||
shell-command-to-string
|
||||
;; Asynchronously.
|
||||
tramp-test--shell-command-to-string-asynchronously))
|
||||
|
||||
(let ((default-directory tramp-test-temporary-file-directory)
|
||||
(shell-file-name "/bin/sh")
|
||||
(envvar (concat "VAR_" (upcase (md5 (current-time-string)))))
|
||||
kill-buffer-query-functions)
|
||||
|
||||
(unwind-protect
|
||||
;; Set a value.
|
||||
(let ((process-environment
|
||||
(cons (concat envvar "=foo") process-environment)))
|
||||
;; Default value.
|
||||
(should
|
||||
(string-match
|
||||
"foo"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}; sleep 1" envvar))))))
|
||||
|
||||
(unwind-protect
|
||||
;; Set the empty value.
|
||||
(let ((process-environment
|
||||
(cons (concat envvar "=") process-environment)))
|
||||
;; Value is null.
|
||||
(should
|
||||
(string-match
|
||||
"bla"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}; sleep 1" envvar))))
|
||||
;; Variable is set.
|
||||
(should
|
||||
(string-match
|
||||
(regexp-quote envvar)
|
||||
(funcall this-shell-command-to-string "set; sleep 1")))))
|
||||
|
||||
;; We force a reconnect, in order to have a clean environment.
|
||||
(tramp-cleanup-connection
|
||||
(tramp-dissect-file-name tramp-test-temporary-file-directory)
|
||||
'keep-debug 'keep-password)
|
||||
(unwind-protect
|
||||
;; Unset the variable.
|
||||
(let ((tramp-remote-process-environment
|
||||
(cons (concat envvar "=foo")
|
||||
tramp-remote-process-environment)))
|
||||
;; Set the initial value, we want to unset below.
|
||||
(should
|
||||
(string-match
|
||||
"foo"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}; sleep 1" envvar))))
|
||||
(let ((process-environment
|
||||
(cons envvar process-environment)))
|
||||
;; Variable is unset.
|
||||
(should
|
||||
(string-match
|
||||
"bla"
|
||||
(funcall
|
||||
this-shell-command-to-string
|
||||
(format "echo -n ${%s:?bla}; sleep 1" envvar))))
|
||||
;; Variable is unset.
|
||||
(should-not
|
||||
(string-match
|
||||
(regexp-quote envvar)
|
||||
(funcall this-shell-command-to-string "set; sleep 1")))))))))
|
||||
|
||||
(ert-deftest tramp-test30-vc-registered ()
|
||||
"Check `vc-registered'."
|
||||
:tags '(:expensive-test)
|
||||
(skip-unless (tramp--test-enabled))
|
||||
@ -1667,7 +1763,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
|
||||
;; Cleanup.
|
||||
(ignore-errors (delete-directory tmp-name1 'recursive)))))
|
||||
|
||||
(ert-deftest tramp-test30-make-auto-save-file-name ()
|
||||
(ert-deftest tramp-test31-make-auto-save-file-name ()
|
||||
"Check `make-auto-save-file-name'."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
|
||||
@ -1921,7 +2017,7 @@ Several special characters do not work properly there."
|
||||
(ignore-errors (delete-directory tmp-name2 'recursive)))))
|
||||
|
||||
(defun tramp--test-special-characters ()
|
||||
"Perform the test in `tramp-test31-special-characters*'."
|
||||
"Perform the test in `tramp-test32-special-characters*'."
|
||||
;; Newlines, slashes and backslashes in file names are not
|
||||
;; supported. So we don't test. And we don't test the tab
|
||||
;; character on Windows or Cygwin, because the backslash is
|
||||
@ -1962,13 +2058,13 @@ Several special characters do not work properly there."
|
||||
"{foo}bar{baz}"))
|
||||
|
||||
;; These tests are inspired by Bug#17238.
|
||||
(ert-deftest tramp-test31-special-characters ()
|
||||
(ert-deftest tramp-test32-special-characters ()
|
||||
"Check special characters in file names."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
|
||||
(tramp--test-special-characters))
|
||||
|
||||
(ert-deftest tramp-test31-special-characters-with-stat ()
|
||||
(ert-deftest tramp-test32-special-characters-with-stat ()
|
||||
"Check special characters in file names.
|
||||
Use the `stat' command."
|
||||
:tags '(:expensive-test)
|
||||
@ -1987,7 +2083,7 @@ Use the `stat' command."
|
||||
tramp-connection-properties)))
|
||||
(tramp--test-special-characters)))
|
||||
|
||||
(ert-deftest tramp-test31-special-characters-with-perl ()
|
||||
(ert-deftest tramp-test32-special-characters-with-perl ()
|
||||
"Check special characters in file names.
|
||||
Use the `perl' command."
|
||||
:tags '(:expensive-test)
|
||||
@ -2009,7 +2105,7 @@ Use the `perl' command."
|
||||
tramp-connection-properties)))
|
||||
(tramp--test-special-characters)))
|
||||
|
||||
(ert-deftest tramp-test31-special-characters-with-ls ()
|
||||
(ert-deftest tramp-test32-special-characters-with-ls ()
|
||||
"Check special characters in file names.
|
||||
Use the `ls' command."
|
||||
:tags '(:expensive-test)
|
||||
@ -2032,7 +2128,7 @@ Use the `ls' command."
|
||||
(tramp--test-special-characters)))
|
||||
|
||||
(defun tramp--test-utf8 ()
|
||||
"Perform the test in `tramp-test32-utf8*'."
|
||||
"Perform the test in `tramp-test33-utf8*'."
|
||||
(let* ((utf8 (if (and (eq system-type 'darwin)
|
||||
(memq 'utf-8-hfs (coding-system-list)))
|
||||
'utf-8-hfs 'utf-8))
|
||||
@ -2046,13 +2142,13 @@ Use the `ls' command."
|
||||
"银河系漫游指南系列"
|
||||
"Автостопом по гала́ктике")))
|
||||
|
||||
(ert-deftest tramp-test32-utf8 ()
|
||||
(ert-deftest tramp-test33-utf8 ()
|
||||
"Check UTF8 encoding in file names and file contents."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
|
||||
(tramp--test-utf8))
|
||||
|
||||
(ert-deftest tramp-test32-utf8-with-stat ()
|
||||
(ert-deftest tramp-test33-utf8-with-stat ()
|
||||
"Check UTF8 encoding in file names and file contents.
|
||||
Use the `stat' command."
|
||||
:tags '(:expensive-test)
|
||||
@ -2071,7 +2167,7 @@ Use the `stat' command."
|
||||
tramp-connection-properties)))
|
||||
(tramp--test-utf8)))
|
||||
|
||||
(ert-deftest tramp-test32-utf8-with-perl ()
|
||||
(ert-deftest tramp-test33-utf8-with-perl ()
|
||||
"Check UTF8 encoding in file names and file contents.
|
||||
Use the `perl' command."
|
||||
:tags '(:expensive-test)
|
||||
@ -2093,7 +2189,7 @@ Use the `perl' command."
|
||||
tramp-connection-properties)))
|
||||
(tramp--test-utf8)))
|
||||
|
||||
(ert-deftest tramp-test32-utf8-with-ls ()
|
||||
(ert-deftest tramp-test33-utf8-with-ls ()
|
||||
"Check UTF8 encoding in file names and file contents.
|
||||
Use the `ls' command."
|
||||
:tags '(:expensive-test)
|
||||
@ -2116,7 +2212,7 @@ Use the `ls' command."
|
||||
(tramp--test-utf8)))
|
||||
|
||||
;; This test is inspired by Bug#16928.
|
||||
(ert-deftest tramp-test33-asynchronous-requests ()
|
||||
(ert-deftest tramp-test34-asynchronous-requests ()
|
||||
"Check parallel asynchronous requests.
|
||||
Such requests could arrive from timers, process filters and
|
||||
process sentinels. They shall not disturb each other."
|
||||
@ -2206,7 +2302,7 @@ process sentinels. They shall not disturb each other."
|
||||
(dolist (buf buffers)
|
||||
(ignore-errors (kill-buffer buf)))))))
|
||||
|
||||
(ert-deftest tramp-test34-recursive-load ()
|
||||
(ert-deftest tramp-test35-recursive-load ()
|
||||
"Check that Tramp does not fail due to recursive load."
|
||||
(skip-unless (tramp--test-enabled))
|
||||
|
||||
@ -2229,7 +2325,7 @@ process sentinels. They shall not disturb each other."
|
||||
(mapconcat 'shell-quote-argument load-path " -L ")
|
||||
(shell-quote-argument code)))))))
|
||||
|
||||
(ert-deftest tramp-test35-unload ()
|
||||
(ert-deftest tramp-test36-unload ()
|
||||
"Check that Tramp and its subpackages unload completely.
|
||||
Since it unloads Tramp, it shall be the last test to run."
|
||||
;; Mark as failed until all symbols are unbound.
|
||||
@ -2277,8 +2373,8 @@ Since it unloads Tramp, it shall be the last test to run."
|
||||
;; * Fix `tramp-test15-copy-directory' for `smb'. Using tar in a pipe
|
||||
;; doesn't work well when an interactive password must be provided.
|
||||
;; * Fix `tramp-test27-start-file-process' on MS Windows (`process-send-eof'?).
|
||||
;; * Fix Bug#16928. Set expected error of `tramp-test33-asynchronous-requests'.
|
||||
;; * Fix `tramp-test35-unload' (Not all symbols are unbound). Set
|
||||
;; * Fix Bug#16928. Set expected error of `tramp-test34-asynchronous-requests'.
|
||||
;; * Fix `tramp-test36-unload' (Not all symbols are unbound). Set
|
||||
;; expected error.
|
||||
|
||||
(defun tramp-test-all (&optional interactive)
|
||||
|
Loading…
Reference in New Issue
Block a user