X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/cf6ce3e6ef96abc36a40293b2d9f732d462d2a94..413c31dc7aabcffc6b180fc0a003f149c9743c08:/tests/ui.scm diff --git a/tests/ui.scm b/tests/ui.scm index 1478fe213e..3dc6952e1f 100644 --- a/tests/ui.scm +++ b/tests/ui.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,11 +22,12 @@ #:use-module (guix profiles) #:use-module (guix store) #:use-module (guix derivations) - #:use-module ((guix scripts build) - #:select (%standard-build-options)) + #:use-module ((gnu packages) #:select (specification->package)) + #:use-module (guix tests) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) + #:use-module (srfi srfi-26) #:use-module (srfi srfi-64) #:use-module (ice-9 regex)) @@ -54,43 +55,9 @@ interface, and powerful string processing.") (item "/gnu/store/...") (output "out"))) -(define-syntax-rule (with-environment-variable variable value body ...) - "Run BODY with VARIABLE set to VALUE." - (let ((orig (getenv variable))) - (dynamic-wind - (lambda () - (setenv variable value)) - (lambda () - body ...) - (lambda () - (if orig - (setenv variable orig) - (unsetenv variable)))))) - (test-begin "ui") -(test-equal "parse-command-line" - '((argument . "bar") (argument . "foo") - (cores . 10) ;takes precedence - (substitutes? . #f) (keep-failed? . #t) - (max-jobs . 77) (cores . 42)) - - (with-environment-variable "GUIX_BUILD_OPTIONS" "-c 42 -M 77" - (parse-command-line '("--keep-failed" "--no-substitutes" - "--cores=10" "foo" "bar") - %standard-build-options - (list '())))) - -(test-equal "parse-command-line and --no options" - '((argument . "foo") - (substitutes? . #f)) ;takes precedence - - (with-environment-variable "GUIX_BUILD_OPTIONS" "--no-substitutes" - (parse-command-line '("foo") - %standard-build-options - (list '((substitutes? . #t)))))) - (test-assert "fill-paragraph" (every (lambda (column) (every (lambda (width) @@ -125,6 +92,12 @@ interface, and powerful string processing.") (fill-paragraph "First line. Second line" 24)) +(test-equal "package-description-string vs. Unicode" + "b•ll•t\n\n" ;see + (with-fluids ((%default-port-encoding "ISO-8859-1")) + (package-description-string + (dummy-package "foo" (description "b•ll•t"))))) + (test-equal "package-specification->name+version+output" '(("guile" #f "out") ("guile" "2.0.9" "out") @@ -137,10 +110,10 @@ Second line" 24)) (package-specification->name+version+output spec)) list)) '("guile" - "guile-2.0.9" + "guile@2.0.9" "guile:debug" - "guile-2.0.9:debug" - "guile-cairo-1.4.1"))) + "guile@2.0.9:debug" + "guile-cairo@1.4.1"))) (test-equal "integer" '(1) @@ -218,6 +191,14 @@ Second line" 24)) (string->duration "1m") (string->duration "30d")) +(test-equal "duration, 2 hours" + 7200 + (time-second (string->duration "2h"))) + +(test-equal "duration, 1 second" + (make-time time-duration 0 1) + (string->duration "1s")) + (test-equal "duration, integer" #f (string->duration "1")) @@ -246,6 +227,10 @@ Second line" 24)) (expt 2 40) (size->number "1T")) +(test-equal "size->number, 1.M" + (expt 2 20) + (size->number "1.M")) + (test-assert "size->number, invalid unit" (catch 'quit (lambda () @@ -267,22 +252,44 @@ Second line" 24)) (let* ((m (manifest (list guile-1.8.8))) (t (manifest-transaction (install (list guile-2.0.9))))) (with-store store - (and (string-match "guile\t1.8.8 → 2.0.9" + (and (string-match "guile +1.8.8 → 2.0.9" (with-fluids ((%default-port-encoding "UTF-8")) (with-error-to-string (lambda () (show-manifest-transaction store m t))))) - (string-match "guile\t1.8.8 -> 2.0.9" - (with-fluids ((%default-port-encoding "ISO-8859-1")) - (with-error-to-string - (lambda () - (show-manifest-transaction store m t))))))))) + (string-match "guile +1.8.8 -> 2.0.9" + (with-error-to-string + (lambda () + ;; In Guile 2.2, %DEFAULT-PORT-ENCODING doesn't + ;; influence the encoding of string ports. + (set-port-encoding! (current-error-port) + "ISO-8859-1") + (show-manifest-transaction store m t)))))))) + +(test-assert "package-relevance" + (let ((guile (specification->package "guile")) + (gcrypt (specification->package "guile-gcrypt")) + (go (specification->package "go")) + (gnugo (specification->package "gnugo")) + (libb2 (specification->package "libb2")) + (rx (cut make-regexp <> regexp/icase)) + (>0 (cut > <> 0)) + (=0 zero?)) + (and (>0 (package-relevance guile + (map rx '("scheme")))) + (>0 (package-relevance guile + (map rx '("scheme" "implementation")))) + (>0 (package-relevance gcrypt + (map rx '("guile" "crypto")))) + (=0 (package-relevance guile + (map rx '("guile" "crypto")))) + (>0 (package-relevance go + (map rx '("go")))) + (=0 (package-relevance go + (map rx '("go" "game")))) + (>0 (package-relevance gnugo + (map rx '("go" "game")))) + (>0 (package-relevance libb2 + (map rx '("crypto" "library"))))))) (test-end "ui") - - -(exit (= (test-runner-fail-count (test-runner-current)) 0)) - -;;; Local Variables: -;;; eval: (put 'with-environment-variable 'scheme-indent-function 2) -;;; End: