diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2019-02-06 13:03:26 +0100 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2019-02-06 13:03:26 +0100 |
commit | ba88eea2b3a8a33ecd7fc0ec64e3917c6c2fe21d (patch) | |
tree | 75c68e44d3d76440f416552711b1a47ec83e411e /tests/nar.scm | |
parent | f380f9d55e6757c242acf6c71c4a3ccfcdb066b2 (diff) | |
parent | 4aeb7f34c948f32363f2ae29c6942c6328df758c (diff) | |
download | guix-ba88eea2b3a8a33ecd7fc0ec64e3917c6c2fe21d.tar.gz |
Merge branch 'master' into core-updates
Diffstat (limited to 'tests/nar.scm')
-rw-r--r-- | tests/nar.scm | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/nar.scm b/tests/nar.scm index 5ffe68c9e2..bfc71c69a8 100644 --- a/tests/nar.scm +++ b/tests/nar.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -334,6 +334,40 @@ (lambda () (rmdir input))))) +(test-eq "restore-file with non-UTF8 locale" ;<https://bugs.gnu.org/33603> + 'encoding-error + (let* ((file (search-path %load-path "guix.scm")) + (output (string-append %test-dir "/output")) + (locale (setlocale LC_ALL "C"))) + (dynamic-wind + (lambda () #t) + (lambda () + (define-values (port get-bytevector) + (open-bytevector-output-port)) + + (write-file-tree "root" port + #:file-type+size + (match-lambda + ("root" (values 'directory 0)) + ("root/λ" (values 'regular 0))) + #:file-port (const (%make-void-port "r")) + #:symlink-target (const #f) + #:directory-entries (const '("λ"))) + (close-port port) + + (mkdir %test-dir) + (catch 'encoding-error + (lambda () + ;; This show throw to 'encoding-error. + (restore-file (open-bytevector-input-port (get-bytevector)) + output) + (scandir output)) + (lambda args + 'encoding-error))) + (lambda () + (false-if-exception (rm-rf %test-dir)) + (setlocale LC_ALL locale))))) + (test-assert "restore-file-set (signed, valid)" (with-store store (let* ((texts (unfold (cut >= <> 10) |