;;; 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)