;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (test-base32) #: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 . (false-if-exception (zero? (system (string-append %nix-hash " --version"))))) (test-begin "base32") (test-assert "bytevector->base32-string" (fold (lambda (bv expected result) (and result (string=? (bytevector->base32-string bv) expected))) #t ;; Examples from RFC 4648. (map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar")) '("" "my" "mzxq" "mzxw6" "mzxw6yq" "mzxw6ytb" "mzxw6ytboi"))) (test-assert "base32-string->bytevector" (every (lambda (bv) (equal? (base32-string->bytevector (bytevector->base32-string bv)) bv)) ;; Examples from RFC 4648. (map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar")))) (test-assert "nix-base32-string->bytevector" (every (lambda (bv) (equal? (nix-base32-string->bytevector (bytevector->nix-base32-string bv)) bv)) ;; Examples from RFC 4648. (map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar")))) (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")))) ;; 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-end) ristopher Baines 2022-09-27Merge branch 'staging' into core-updatesMaxim Cournoyer 2022-09-24gnu: Remove icu4c-67.Efraim Flashner 2022-07-22Merge branch 'staging' into core-updatesMarius Bakke 2022-07-16gnu: mozjs: Build with ICU 69.Marius Bakke 2022-07-11gnu: icu4c-70: Fix building on riscv64-linux.Efraim Flashner 2022-06-30gnu: icu4c: Remove input labels.Marius Bakke 2022-06-27gnu: icu4c: Update to 71.1.Marius Bakke 2022-06-23gnu: icu4c: Add 71.1.Marius Bakke 2022-01-27gnu: icu4c: Skip tests on riscv64-linux.Efraim Flashner 2022-01-15gnu: icu4c: Add version 70.Jonathan Brielmaier 2021-12-23gnu: java-icu4j: Update to 70.1.Ricardo Wurmus 2021-12-13gnu: Simplify package inputs.Ludovic Courtès 2021-09-18gnu: icu4j: Fix build.Guillaume Le Vaillant 2021-08-08gnu: Remove redundant icu4c-69.Efraim Flashner