emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-25 05ba7a0: Add test for handling environment variab


From: Michael Albinus
Subject: [Emacs-diffs] emacs-25 05ba7a0: Add test for handling environment variables in Tramp
Date: Thu, 14 Jul 2016 08:11:03 +0000 (UTC)

branch: emacs-25
commit 05ba7a0f83205e647546c2a3bb90e16add58cf06
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    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.
---
 test/automated/tramp-tests.el |  130 +++++++++++++++++++++++++++++++++++------
 1 file changed, 113 insertions(+), 17 deletions(-)

diff --git a/test/automated/tramp-tests.el b/test/automated/tramp-tests.el
index a12ee38..cc90d19 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]