From: Eli Zaretskii <eliz@gnu.org>
Date: Thu, 5 Nov 2015 18:12:19 +0000 (+0200)
Subject: Add test for bug #21831
X-Git-Tag: emacs-25.0.90~917
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3be53aaed126e72be11a6743de6ddd51aaf96b63;p=emacs.git

Add test for bug #21831

* test/automated/process-tests.el
(start-process-should-not-modify-arguments): New test.  (Bug#21831)
Suggested by Nicolas Richard <youngfrog@members.fsf.org>
---

diff --git a/test/automated/process-tests.el b/test/automated/process-tests.el
index 58a2de7451d..4a43a013fb4 100644
--- a/test/automated/process-tests.el
+++ b/test/automated/process-tests.el
@@ -142,4 +142,22 @@
     (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)