diff options
author | Michael Albinus <michael.albinus@gmx.de> | 2016-07-14 10:10:53 +0200 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2016-07-14 10:10:53 +0200 |
commit | 05ba7a0f83205e647546c2a3bb90e16add58cf06 (patch) | |
tree | ce75e6996b12e7702821f5a3de6fd873a2a6637c /test | |
parent | e393d4f4ce64498408bd82f88eeab182c18457e4 (diff) |
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.
Diffstat (limited to 'test')
-rw-r--r-- | test/automated/tramp-tests.el | 130 |
1 files changed, 113 insertions, 17 deletions
diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el index a12ee38757..cc90d1950c 100644 --- a/test/automated/tramp-tests.el +++ b/test/automated/tramp-tests.el @@ -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) |