aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(define-module (test-uuid)
  #:use-module (gnu system uuid)
  #:use-module (srfi srfi-64)
  #:use-module (rnrs bytevectors))

(test-begin "uuid")

(test-equal "uuid->string"
  "c5307e6b-d1ba-499d-89c5-cb0b143577c4"
  (uuid->string
   #vu8(197 48 126 107 209 186 73 157 137 197 203 11 20 53 119 196)))

(test-equal "string->uuid"
  '(16 "4dab5feb-d176-45de-b287-9b0a6e4c01cb")
  (let ((uuid (string->uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))
    (list (bytevector-length uuid) (uuid->string uuid))))

(test-assert "uuid"
  (let ((str "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))
    (bytevector=? (uuid-bytevector
                   (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))
                  (string->uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))))

(test-assert "uuid, syntax error"
  (catch 'syntax-error
    (lambda ()
      (eval '(uuid "foobar") (current-module))
      #f)
    (lambda (key proc message location form . args)
      (and (eq? proc 'uuid)
           (string-contains message "invalid UUID")
           (equal? form '(uuid "foobar" 'dce))))))

(test-equal "uuid, ISO-9660, format preserved"
  "1970-01-01-17-14-42-99"
  (uuid->string (uuid "1970-01-01-17-14-42-99" 'iso9660)))

(test-equal "uuid, FAT32, format preserved"
  "1234-ABCD"
  (uuid->string (uuid "1234-abcd" 'fat32)))

(test-equal "uuid, FAT32, leading zeros preserved"
  "00CA-050E"                                    ;<https://bugs.gnu.org/35582>
  (uuid->string (uuid "00CA-050E" 'fat32)))

(test-assert "uuid, dynamic value"
  (let* ((good "4dab5feb-d176-45de-b287-9b0a6e4c01cb")
         (bad  (string-drop good 3)))
    (and (uuid? (uuid good))
         (string=? good (uuid->string (uuid good)))
         (not (uuid bad)))))

(test-assert "uuid=?"
  (and (uuid=? (uuid-bytevector (uuid "1234-abcd" 'fat32))
               (uuid "1234-abcd" 'fat32))
       (uuid=? (uuid "1234-abcd" 'fat32)
               (uuid "1234-abcd" 'fat))))

(test-end)
See <https://lists.gnu.org/archive/html/guix-devel/2024-05/msg00003.html> for a related discussion. * configure.ac: Default $prefix to '' unless already set. * doc/contributing.texi (Building from Git): Streamline doc. * doc/guix-cookbook.texi (Guix environment via direnv): Likewise. Reviewed-by: Ludovic Courtès <ludo@gnu.org> Change-Id: I23cd12b58a842d246fbc9fdc740311c573eb0212 Maxim Cournoyer 2024-04-19maint: Resurrect running `make' from a tarball....This is a follow-up to commit 8b972da068708a8b17f3ab153ea940690ca49ca9 Makefile.am: Auto-configure Git on 'make'. * configure.ac (in_git_p): New conditional. * Makefile.am (nodist_noinst_DATA): Use it to only enable this when building from Git. Change-Id: I09a90a59a4933a8cdb04124467d38209171f2a57 Janneke Nieuwenhuizen 2023-10-22teams: Adjust shebang to use 'guix repl'....This ensures the correct Guix dependencies are always available for the script. * etc/teams.scm.in: Rename to... * etc/teams.scm: ... this. Adjust shebang. * .gitignore: No longer ignore it. * configure.ac: Do not process it with AC_CONFIG_FILES. Reported-by: Clément Lassieur <clement@lassieur.org> Fixes: https://issues.guix.gnu.org/66605 Change-Id: I7a01750c6c5f0696b6c36b1e6caa9389d9e6822c Maxim Cournoyer 2023-09-26build: Add dependency on Git....* configure.ac: Check for ‘git’ and substitute ‘GIT’. * guix/config.scm.in (%git): New variable. * guix/self.scm (compiled-guix): Define ‘git’ and pass it to ‘make-config.scm’. (make-config.scm): Add #:git; emit a ‘%git’ variable. * doc/guix.texi (Requirements): Add it. Ludovic Courtès 2022-07-03etc: Add teams.scm....* etc/teams.scm.in: New file. * configure.ac: Generate executable. * .gitignore: Ignore generated file. Ricardo Wurmus 2022-01-25build: Require Guile >= 3.0.3....Fixes <https://issues.guix.gnu.org/53157>. Reported by Efraim Flashner <efraim@flashner.co.il>. * configure.ac: Require Guile >= 3.0.3. * doc/guix.texi (Requirements): Update accordingly. Ludovic Courtès 2021-11-23maint: "make dist" builds tarballs in 'ustar' format....This allows us to have file names longer than 99 characters. * configure.ac: Pass 'tar-ustar' to 'AM_INIT_AUTOMAKE'. Ludovic Courtès 2021-06-01maint: Require Guile 3.0....* configure.ac: Require Guile 3.0. * doc/guix.texi (Requirements): Adjust accordingly. * gnu/packages/package-management.scm (guile2.2-guix): Remove. * guix/lint.scm (exception-with-kind-and-args?): Remove 'cond-expand'. * guix/scripts/deploy.scm (deploy-machine*): Likewise. * guix/store.scm (call-with-store): Likewise. * guix/swh.scm (http-get*, http-post*): Likewise. * guix/ui.scm (without-compiler-optimizations, guard*) (call-with-error-handling): Likewise. Ludovic Courtès 2021-05-03nls: Do not update po files on first make invocation....We need to update the minimal gettext version to take advantage of new features. Before this patch, the first make invocation would modify po/guix and po/packages po files, and we advised to run `git checkout po` to clean the changes. * configure.ac (AM_GNU_GETTEXT_VERSION): Update to 0.19.1. * po/guix/Makevars: Set PO_DEPENDS_ON_POT to no. * po/packages/Makevars: Set PO_DEPENDS_ON_POT to no. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Julien Lepiller 2021-04-25import: Remove Nix importer....This importer has suffered from bitrot and no longer works with current Nix and Nixpkgs. See <https://bugs.gnu.org/32339> and <https://bugs.gnu.org/36255>. * guix/import/snix.scm, guix/scripts/import/nix.scm, tests/snix.scm: Remove. * Makefile.am (MODULES, SCM_TESTS): Remove them. * guix/scripts/import.scm (importers): Remove "nix". * build-aux/test-env.in: Remove NIXPKGS variable. * configure.ac: Remove '--with-nixpkgs' option. * doc/guix.texi (Invoking guix import): Remove bit about "guix import nix". * etc/completion/fish/guix.fish: Likewise. Ludovic Courtès 2021-04-23build: Add a check for Guile-Lib....* configure.ac: Check if the Guile-Lib module is present and recent enough and warn in case it isn't. Maxim Cournoyer 2021-03-17maint: Check whether Guile-zlib is recent enough....This is a followup to a04aef2430645357d7796969d4b6453478ff8a3f. * m4/guix.m4 (GUIX_CHECK_GUILE_ZLIB): New macro. * configure.ac: Use it when checking for Guile-zlib. Ludovic Courtès 2021-02-04build: Add '--with-channel-commit' and related configure flags....Partially fixes <https://bugs.gnu.org/45896>. * m4/guix.m4 (GUIX_CHANNEL_METADATA): New macro. * configure.ac: Use it. * guix/config.scm.in (%channel-metadata): Adjust accordingly. Ludovic Courtès