me
/
guix
Archived
1
0
Fork 0

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.
master
Ludovic Courtès 2021-09-26 23:09:23 +02:00
parent c6a8d6db77
commit 9b9bfc7ac2
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 17 additions and 0 deletions

View File

@ -375,6 +375,23 @@ to actual keystrokes."
(lambda (runner) (lambda (runner)
(let ((success? (= (test-runner-fail-count runner) 0))) (let ((success? (= (test-runner-fail-count runner) 0)))
(test-on-final-simple runner) (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?)))) (exit success?))))
runner)) runner))