]> code.delx.au - gnu-emacs/blobdiff - test/automated/process-tests.el
* test/automated/package-test.el (package-test-signed): Tweak skip
[gnu-emacs] / test / automated / process-tests.el
index 1dab615bed0e7e211ad067a7d21eb23306daf8f1..8554a287ccdedfeaea5e9f8025c71ce7f2b3d465 100644 (file)
@@ -1,6 +1,6 @@
 ;;; process-tests.el --- Testing the process facilities
 
-;; Copyright (C) 2013-2015 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
 
 ;; This program is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
     sentinel-called))
 
 (ert-deftest process-test-sentinel-accept-process-output ()
+  (skip-unless (executable-find "bash"))
   (should (process-test-sentinel-wait-function-working-p
            #'accept-process-output)))
 
 (ert-deftest process-test-sentinel-sit-for ()
+  (skip-unless (executable-find "bash"))
   (should
    (process-test-sentinel-wait-function-working-p (lambda () (sit-for 0.01 t)))))
 
             ;; to force quoting.
             (setq batfile (make-temp-file "echo args" nil ".bat"))
             (with-temp-file batfile
-              (insert "@echo arg1 = %1, arg2 = %2\n"))
+              (insert "@echo arg1=%1, arg2=%2\n"))
             (with-temp-buffer
               (call-process batfile nil '(t t) t "x &y")
-              (should (string= (buffer-string) "arg1 = \"x &y\", arg2 = \n")))
+              (should (string= (buffer-string) "arg1=\"x &y\", arg2=\n")))
             (with-temp-buffer
               (call-process-shell-command
                (mapconcat #'shell-quote-argument (list batfile "x &y") " ")
                nil '(t t) t)
-              (should (string= (buffer-string) "arg1 = \"x &y\", arg2 = \n"))))
+              (should (string= (buffer-string) "arg1=\"x &y\", arg2=\n"))))
         (when batfile (delete-file batfile))))))
 
 (ert-deftest process-test-stderr-buffer ()
     (should (equal "hello stderr!\n"
                   (mapconcat #'identity (nreverse stderr-output) "")))))
 
+(ert-deftest start-process-should-not-modify-arguments ()
+  "`start-process' must not modify its arguments in-place."
+  ;; See bug#21831.
+  (let* ((path (pcase system-type
+                 ((or 'windows-nt 'ms-dos)
+                  ;; Make sure the file name uses forward slashes.
+                  ;; The original bug was that 'start-process' would
+                  ;; convert forward slashes to backslashes.
+                  (expand-file-name (executable-find "attrib.exe")))
+                 (_ "/bin//sh")))
+         (samepath (copy-sequence path)))
+    ;; Make sure 'start-process' actually goes all the way and invokes
+    ;; the program.
+    (should (process-live-p (condition-case nil
+                                (start-process "" nil path)
+                              (error nil))))
+    (should (equal path samepath))))
+
 (provide 'process-tests)