1.0.29.1: fix FILL
[sbcl.git] / tests / run-program.impure.lisp
index 644bc2b..9ef07e5 100644 (file)
        (with-open-file (f *tmpfile*)
          (assert (equal "baz" (read-line f)))))
   (delete-file *tmpfile*))
+
+;; Around 1.0.12 there was a regression when :INPUT or :OUTPUT was a
+;; pathname designator.  Since these use the same code, it should
+;; suffice to test just :INPUT.
+(let ((file))
+  (unwind-protect
+       (progn (with-open-file (f "run-program-test.tmp" :direction :output)
+                (setf file (truename f))
+                (write-line "Foo" f))
+                  (assert (run-program "cat" ()
+                                       :input file :output t
+                                       :search t :wait t)))
+    (when file
+      (delete-file file))))
+
+;;; This used to crash on Darwin and trigger recursive lock errors on
+;;; every platform.
+(with-test (:name (:run-program :stress))
+  ;; Do it a hundred times in batches of 10 so that with a low limit
+  ;; of the number of processes the test can have a chance to pass.
+  (loop
+   repeat 10 do
+   (map nil
+        #'sb-ext:process-wait
+        (loop repeat 10
+              collect
+              (sb-ext:run-program "/bin/echo" '
+                                  ("It would be nice if this didn't crash.")
+                                  :wait nil :output nil)))))