commit 8d6209ea56241bb1890c142539927c9ef3fb5a13 Author: Ludovic Courtès Date: Fri Nov 4 22:44:32 2016 +0100 tests: Throw 'unresolved when the REPL server is too slow. commit 2fbde7f02adb8c6585e9baf6e293ee49cd23d4c4 Author: Ludovic Courtès Date: Fri Nov 4 22:45:51 2016 +0100 tests: Avoid race condition in REPL server test. index ca389ba..4b5ec0c 100644 --- a/test-suite/tests/00-repl-server.test +++ b/test-suite/tests/00-repl-server.test @@ -61,10 +61,11 @@ socket connected to that server." (lambda () (connect client-socket sockaddr)) (lambda args - (when (and (memv (system-error-errno args) - (list ENOENT ECONNREFUSED)) - (< tries 3)) - (sleep 1) + (when (memv (system-error-errno args) + (list ENOENT ECONNREFUSED)) + (when (> tries 30) + (throw 'unresolved)) + (usleep 100) (loop (+ tries 1)))))) (proc client-socket)) @@ -104,8 +105,14 @@ reached." "scheme@(repl-server)> $1 = 42\n" (with-repl-server socket (read-until-prompt socket %last-line-before-prompt) - (display "(+ 40 2)\n(quit)\n" socket) - (read-string socket))) + + ;; Wait until 'repl-reader' in boot-9 has written the prompt. + ;; Otherwise, if we write too quickly, 'repl-reader' checks for + ;; 'char-ready?' and doesn't print the prompt. + (match (select (list socket) '() (list socket) 3) + (((_) () ()) + (display "(+ 40 2)\n(quit)\n" socket) + (read-string socket))))) (pass-if "HTTP inter-protocol attack" ;CVE-2016-8606 (with-repl-server socket