;;; 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) nu/installer/steps.scm (run-installer-steps): Likewise. Use it to skip writing to socket. * gnu/installer/newt/final.scm (run-final-page): Rename to... (run-final-page-install): ...this. (dry-run-final-page, run-final-page): New procedures. * gnu/installer/parted.scm (bootloader-configuration): Cater for empty user partitions. * gnu/installer/utils.scm (dry-run-command): New procedure. * gnu/installer.scm (compute-locale-step): Add #:dry-run? parameter. Use it to avoid actually applying locale. (compute-keymap-step): Add dry-run? parameter. Pass it to keymap-page. (installer-program): Add #:dry-run? parameter. If #:true avoid writing to /proc, use dry-run-command, skip sync and reboot, and pass dry-run? to... (installer-steps): ...here. Add #:dry-run? parameter. Use it to disable skip network, substitutes, partitioning pages, and pass it to... compute-locale-step, compute-keymap-step, and final-page. Change-Id: I0ff4c3b0a0c69539af617c27ba37654beed44619 Janneke Nieuwenhuizen 2024-11-11installer: Use `%' for parameter %run-command-in-installer....* gnu/installer/utils.scm (run-command-in-installer): Rename to... (%run-command-in-installer): ...this. * gnu/installer.scm (installer-program): Update accordingly. * gnu/installer/parted.scm (remove-logical-devices, create-btrfs-file-system, create-ext4-file-system, create-fat16-file-system, create-fat32-file-system, create-jfs-file-system, create-ntfs-file-system, create-xfs-file-system, create-swap-partition, luks-format-and-open, luks-ensure-open, luks-close): Update accordingly. Change-Id: I96ebc59ebc85fd8ebccb0cc57130b4e7532d287f Janneke Nieuwenhuizen 2024-11-11installer: Fix file-name typos....* gnu/installer/newt/page.scm (run-dump-page): Typo file-name. * gnu/installer/utils.scm (open-new-log-port): Likewise. Change-Id: I837991a0ee5054b3afa8328205e23ac6f9fbae8d Janneke Nieuwenhuizen