diff --git a/guix/ui.scm b/guix/ui.scm index 4a3630f242..67dd062a34 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -803,7 +803,10 @@ converted to a space; sequences of more than one line break are preserved." (define (texi->plain-text str) "Return a plain-text representation of texinfo fragment STR." - (stexi->plain-text (texi-fragment->stexi str))) + ;; 'texi-fragment->stexi' uses a string port so make sure it's a + ;; Unicode-capable one (see .) + (with-fluids ((%default-port-encoding "UTF-8")) + (stexi->plain-text (texi-fragment->stexi str)))) (define (package-description-string package) "Return a plain-text representation of PACKAGE description field." diff --git a/tests/ui.scm b/tests/ui.scm index 25fc709431..bd4c907525 100644 --- a/tests/ui.scm +++ b/tests/ui.scm @@ -22,6 +22,7 @@ #:use-module (guix profiles) #:use-module (guix store) #:use-module (guix derivations) + #:use-module (guix tests) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) @@ -89,6 +90,12 @@ interface, and powerful string processing.") (fill-paragraph "First line. Second line" 24)) +(test-equal "package-description-string vs. Unicode" + "b•ll•t\n\n" ;see + (with-fluids ((%default-port-encoding "ISO-8859-1")) + (package-description-string + (dummy-package "foo" (description "b•ll•t"))))) + (test-equal "package-specification->name+version+output" '(("guile" #f "out") ("guile" "2.0.9" "out")