~ruther/guix-local

8134dc1f74c2df2d42e1510fd3ac35234a4d89df — Ludovic Courtès 9 years ago 65104978
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.
3 files changed, 51 insertions(+), 1 deletions(-)

M gnu/local.mk
M gnu/packages/guile.scm
A gnu/packages/patches/guile-repl-server-test.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 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 \

M gnu/packages/guile.scm => gnu/packages/guile.scm +2 -1
@@ 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)

A gnu/packages/patches/guile-repl-server-test.patch => gnu/packages/patches/guile-repl-server-test.patch +48 -0
@@ 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