diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-10-09 09:53:02 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-10-09 18:54:12 +0200 |
commit | fe17037b387c6eca0c45f0526d2761e982a192bb (patch) | |
tree | 72a5117986a4f5d983c9e3bf360ad0d8845eddd4 /tests/status.scm | |
parent | 276f368051ff52cf202ede9fce579e49d9d744ec (diff) | |
download | patches-fe17037b387c6eca0c45f0526d2761e982a192bb.tar patches-fe17037b387c6eca0c45f0526d2761e982a192bb.tar.gz |
status: Gracefully handle invalid UTF-8 in build logs.
* guix/status.scm (maybe-utf8->string): New procedure.
(build-event-output-port): Use it in lieu of 'utf8->string'.
* tests/status.scm ("build-output-port, UTF-8")
("current-build-output-port, UTF-8 + garbage"): New tests.
Diffstat (limited to 'tests/status.scm')
-rw-r--r-- | tests/status.scm | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/tests/status.scm b/tests/status.scm index 04dedb702c..486ad04dd2 100644 --- a/tests/status.scm +++ b/tests/status.scm @@ -20,7 +20,9 @@ #:use-module (guix status) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) - #:use-module (srfi srfi-64)) + #:use-module (srfi srfi-64) + #:use-module (rnrs bytevectors) + #:use-module (rnrs io ports)) (test-begin "status") @@ -112,4 +114,22 @@ (display "@ substituter-succeeded baz\n" port) (list first (get-status))))) +(test-equal "build-output-port, UTF-8" + '((build-log "lambda is λ!\n")) + (let-values (((port get-status) (build-event-output-port cons '())) + ((bv) (string->utf8 "lambda is λ!\n"))) + (put-bytevector port bv) + (force-output port) + (get-status))) + +(test-equal "current-build-output-port, UTF-8 + garbage" + ;; What about a mixture of UTF-8 + garbage? + '((build-log "garbage: �lambda: λ\n")) + (let-values (((port get-status) (build-event-output-port cons '()))) + (display "garbage: " port) + (put-bytevector port #vu8(128)) + (put-bytevector port (string->utf8 "lambda: λ\n")) + (force-output port) + (get-status))) + (test-end "status") |