gnu: guile@2.0.13: Fix non-determinism issue in REPL server test.

* gnu/packages/patches/guile-repl-server-test.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/guile.scm (guile-2.0.13)[source]: Use it.
This commit is contained in:
Ludovic Courtès 2016-11-18 10:37:46 +01:00
parent 651049789f
commit 8134dc1f74
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 51 additions and 1 deletions

View File

@ -587,6 +587,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-linux-syscalls.patch \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-relocatable.patch \
%D%/packages/patches/guile-repl-server-test.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \

View File

@ -217,7 +217,8 @@ without requiring the source code to be rewritten.")
".tar.xz"))
(sha256
(base32
"12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p"))))))
"12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p"))
(patches (search-patches "guile-repl-server-test.patch"))))))
(define-public guile-next
(package (inherit guile-2.0)

View File

@ -0,0 +1,48 @@
commit 8d6209ea56241bb1890c142539927c9ef3fb5a13
Author: Ludovic Courtès <ludo@gnu.org>
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 <ludo@gnu.org>
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