From: Noam Postavsky Date: Fri, 23 Aug 2019 00:48:19 +0000 (-0400) Subject: Fix non-deterministic process test X-Git-Tag: emacs-27.0.90~1328^2~87 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=aa49aa884053d0e8b33efe265f2aade19d1f3f3d;p=emacs.git Fix non-deterministic process test * test/src/process-tests.el (set-process-filter-t): Don't assume subprocess output will come in a single chunk, keep waiting for more data until next "prompt" is read from subprocess. --- diff --git a/test/src/process-tests.el b/test/src/process-tests.el index 82eeee1150a..158c036aaa7 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el @@ -155,24 +155,30 @@ (concat invocation-directory invocation-name) "-Q" "--batch" "--eval" (prin1-to-string - '(let (s) - (while (setq s (read-from-minibuffer "$ ")) + '(let ((s nil) (count 0)) + (while (setq s (read-from-minibuffer + (format "%d> " count))) (princ s) - (princ "\n"))))))) + (princ "\n") + (setq count (1+ count)))))))) (set-process-query-on-exit-flag proc nil) (send-string proc "one\n") - (should - (accept-process-output proc 1)) ; Read "one". - (should (equal (buffer-string) "$ one\n$ ")) + (while (not (equal (buffer-substring + (line-beginning-position) (point-max)) + "1> ")) + (accept-process-output proc)) ; Read "one". + (should (equal (buffer-string) "0> one\n1> ")) (set-process-filter proc t) ; Stop reading from proc. (send-string proc "two\n") (should-not (accept-process-output proc 1)) ; Can't read "two" yet. - (should (equal (buffer-string) "$ one\n$ ")) + (should (equal (buffer-string) "0> one\n1> ")) (set-process-filter proc nil) ; Resume reading from proc. - (should - (accept-process-output proc 1)) ; Read "two" from proc. - (should (equal (buffer-string) "$ one\n$ two\n$ "))))) + (while (not (equal (buffer-substring + (line-beginning-position) (point-max)) + "2> ")) + (accept-process-output proc)) ; Read "Two". + (should (equal (buffer-string) "0> one\n1> two\n2> "))))) (ert-deftest start-process-should-not-modify-arguments () "`start-process' must not modify its arguments in-place."