gnu: linux-libre@4.14: Update to 4.14.198.
[jackhill/guix/guix.git] / tests / ui.scm
index 1e98e35..3dc6952 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix profiles)
   #:use-module (guix store)
   #:use-module (guix derivations)
+  #: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))
 
@@ -225,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 ()
@@ -246,12 +252,12 @@ 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"
+           (string-match "guile +1.8.8 -> 2.0.9"
                          (with-error-to-string
                            (lambda ()
                              ;; In Guile 2.2, %DEFAULT-PORT-ENCODING doesn't
@@ -260,4 +266,30 @@ Second line" 24))
                                                  "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")