;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2015, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (test-base32)
- #:use-module (guix hash)
+ #:use-module (gcrypt hash)
#:use-module (guix base32)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-34)
#:use-module (srfi srfi-64)
- #:use-module (ice-9 rdelim)
- #:use-module (ice-9 popen)
#:use-module (ice-9 match)
#:use-module (rnrs bytevectors)
#:use-module (rnrs io ports))
;; Test the (guix base32) module.
-(define %nix-hash
- (or (and=> (getenv "NIX_HASH")
- (match-lambda
- ("" #f)
- (val val)))
- "nix-hash"))
-
-(define %have-nix-hash?
- ;; Note: Use `system', not `system*', because of <http://bugs.gnu.org/13166>.
- (false-if-exception
- (zero? (system (string-append %nix-hash " --version")))))
-
(test-begin "base32")
(test-assert "bytevector->base32-string"
;; Examples from RFC 4648.
(map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar"))))
-;; The following test requires `nix-hash' in $PATH.
-(unless %have-nix-hash?
- (test-skip 1))
-
-(test-assert "sha256 & bytevector->nix-base32-string"
- (let ((file (search-path %load-path "tests/test.drv")))
- (equal? (bytevector->nix-base32-string
- (sha256 (call-with-input-file file get-bytevector-all)))
- (let* ((c (format #f "~a --type sha256 --base32 --flat \"~a\""
- %nix-hash file))
- (p (open-input-pipe c))
- (l (read-line p)))
- (close-pipe p)
- l))))
+(test-equal "&invalid-base32-character"
+ #\e
+ (guard (c ((invalid-base32-character? c)
+ (invalid-base32-character-value c)))
+ (nix-base32-string->bytevector
+ (string-append (make-string 51 #\a) "e"))))
(test-end)
-
-\f
-(exit (= (test-runner-fail-count (test-runner-current)) 0))