diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-02-07 23:05:23 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-02-07 23:16:55 +0100 |
commit | 46b8aadbd6f4673aad27f6425f48a3b3ac5c88dc (patch) | |
tree | ac64736caa7b360207c2286a31d46835173bd718 /tests | |
parent | cbc538fe69577068d5676428c77287d82123a704 (diff) |
serialization: Check for EOF and incomplete input conditions.
Fixes <http://bugs.gnu.org/19756>.
Reported by <sleep_walker@suse.cz>.
* guix/serialization.scm (currently-restored-file): New variable.
(get-bytevector-n*): New procedure.
(read-int, read-long-long, read-string, read-latin1-string,
read-contents): Use it instead of 'get-bytevector-n'.
(restore-file): Parameterize 'currently-restored-file' and set it.
* tests/nar.scm ("restore-file with incomplete input"): New test.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/nar.scm | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tests/nar.scm b/tests/nar.scm index 38b2482c92..4ccd364861 100644 --- a/tests/nar.scm +++ b/tests/nar.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -201,6 +201,15 @@ (lambda () (rm-rf input))))) +(test-equal "restore-file with incomplete input" + (string-append %test-dir "/foo") + (let ((port (open-bytevector-input-port #vu8(1 2 3)))) + (guard (c ((nar-error? c) + (and (eq? port (nar-error-port c)) + (nar-error-file c)))) + (restore-file port (string-append %test-dir "/foo")) + #f))) + (test-assert "write-file + restore-file" (let* ((input (string-append (dirname (search-path %load-path "guix.scm")) "/guix")) |