guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/03: gnu: address@hidden: Fix non-determinism issue in REPL server tes


From: Ludovic Courtès
Subject: 01/03: gnu: address@hidden: Fix non-determinism issue in REPL server test.
Date: Fri, 18 Nov 2016 17:28:17 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit 8134dc1f74c2df2d42e1510fd3ac35234a4d89df
Author: Ludovic Courtès <address@hidden>
Date:   Fri Nov 18 10:37:46 2016 +0100

    gnu: address@hidden: 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.
---
 gnu/local.mk                                      |    1 +
 gnu/packages/guile.scm                            |    3 +-
 gnu/packages/patches/guile-repl-server-test.patch |   48 +++++++++++++++++++++
 3 files changed, 51 insertions(+), 1 deletion(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index ff8586e..17bfda2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -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 \
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 3f45b29..4572544 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -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)
diff --git a/gnu/packages/patches/guile-repl-server-test.patch 
b/gnu/packages/patches/guile-repl-server-test.patch
new file mode 100644
index 0000000..81e724e
--- /dev/null
+++ b/gnu/packages/patches/guile-repl-server-test.patch
@@ -0,0 +1,48 @@
+commit 8d6209ea56241bb1890c142539927c9ef3fb5a13
+Author: Ludovic Courtès <address@hidden>
+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 <address@hidden>
+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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]