guix-commits
[Top][All Lists]
Advanced

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

01/04: marionette: 'system-test-runner' dumps test log upon failure.


From: guix-commits
Subject: 01/04: marionette: 'system-test-runner' dumps test log upon failure.
Date: Sun, 26 Sep 2021 17:37:43 -0400 (EDT)

civodul pushed a commit to branch core-updates-frozen
in repository guix.

commit 9b9bfc7ac21ccbaf0757289abc5f821a274c86b1
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sun Sep 26 23:09:23 2021 +0200

    marionette: 'system-test-runner' dumps test log upon failure.
    
    * gnu/build/marionette.scm (system-test-runner): In 'test-end' handler,
    when SUCCESS? is false, dump log content to the current error port.
---
 gnu/build/marionette.scm | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm
index 941461a..08de794 100644
--- a/gnu/build/marionette.scm
+++ b/gnu/build/marionette.scm
@@ -375,6 +375,23 @@ to actual keystrokes."
       (lambda (runner)
         (let ((success? (= (test-runner-fail-count runner) 0)))
           (test-on-final-simple runner)
+
+          (when (not success?)
+            (let* ((log-port (test-runner-aux-value runner))
+                   (log-file (port-filename log-port)))
+              (format (current-error-port)
+                      "\nTests failed, dumping log file '~a'.\n\n"
+                      log-file)
+
+              ;; At this point LOG-PORT is not closed yet; flush it.
+              (force-output log-port)
+
+              ;; Brute force to avoid dependency on (guix build utils) for
+              ;; 'dump-port'.
+              (let ((content (call-with-input-file log-file
+                               get-bytevector-all)))
+                (put-bytevector (current-error-port) content))))
+
           (exit success?))))
     runner))
 



reply via email to

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