aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cran.scm6
-rw-r--r--tests/discovery.scm52
-rw-r--r--tests/guix-build.sh1
-rw-r--r--tests/publish.scm32
-rw-r--r--tests/store.scm5
-rw-r--r--tests/ui.scm6
6 files changed, 90 insertions, 12 deletions
diff --git a/tests/cran.scm b/tests/cran.scm
index c162d45d8a..d785ec5db1 100644
--- a/tests/cran.scm
+++ b/tests/cran.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,6 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (test-cran)
+ #:use-module (gnu packages statistics)
#:use-module (guix import cran)
#:use-module (guix tests)
#:use-module (srfi srfi-1)
@@ -86,6 +88,10 @@ Date/Publication: 2015-07-14 14:15:16
'()
((@@ (guix import cran) listify) simple-alist "BadList"))
+(test-equal "r-mininal is not a cran package"
+ #f
+ ((@@ (guix import cran) cran-package?) r-minimal))
+
(test-assert "description->package"
;; Replace network resources with sample data.
(mock ((guix build download) url-fetch
diff --git a/tests/discovery.scm b/tests/discovery.scm
new file mode 100644
index 0000000000..b838731e16
--- /dev/null
+++ b/tests/discovery.scm
@@ -0,0 +1,52 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 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-discovery)
+ #:use-module (guix discovery)
+ #:use-module (guix build-system)
+ #:use-module (srfi srfi-64)
+ #:use-module (ice-9 match))
+
+(define %top-srcdir
+ (dirname (search-path %load-path "guix.scm")))
+
+(test-begin "discovery")
+
+(test-assert "scheme-modules"
+ (match (map module-name (scheme-modules %top-srcdir "guix/import"))
+ ((('guix 'import _ ...) ..1)
+ #t)))
+
+(test-assert "all-modules"
+ (match (map module-name
+ (all-modules `((,%top-srcdir . "guix/build-system"))))
+ ((('guix 'build-system names) ..1)
+ names)))
+
+(test-assert "fold-module-public-variables"
+ (let ((modules (all-modules `((,%top-srcdir . "guix/build-system")))))
+ (match (fold-module-public-variables (lambda (obj result)
+ (if (build-system? obj)
+ (cons obj result)
+ result))
+ '()
+ modules)
+ (((? build-system? bs) ..1)
+ bs))))
+
+(test-end "discovery")
diff --git a/tests/guix-build.sh b/tests/guix-build.sh
index 9494e7371f..880a582777 100644
--- a/tests/guix-build.sh
+++ b/tests/guix-build.sh
@@ -185,7 +185,6 @@ test "`guix build superseded -d`" = "`guix build bar -d`"
# Parsing package names and versions.
guix build -n time # PASS
guix build -n time@1.7 # PASS, version found
-guix build -n time-1.7 # PASS, deprecated version syntax
if guix build -n time@3.2; # FAIL, version not found
then false; else true; fi
if guix build -n something-that-will-never-exist; # FAIL
diff --git a/tests/publish.scm b/tests/publish.scm
index 233b71ce93..268c324551 100644
--- a/tests/publish.scm
+++ b/tests/publish.scm
@@ -122,13 +122,15 @@ URL: nar/~a
Compression: none
NarHash: sha256:~a
NarSize: ~d
-References: ~a~%"
+References: ~a
+FileSize: ~a~%"
%item
(basename %item)
(bytevector->nix-base32-string
(path-info-hash info))
(path-info-nar-size info)
- (basename (first (path-info-references info)))))
+ (basename (first (path-info-references info)))
+ (path-info-nar-size info)))
(signature (base64-encode
(string->utf8
(canonical-sexp->string
@@ -152,11 +154,13 @@ URL: nar/~a
Compression: none
NarHash: sha256:~a
NarSize: ~d
-References: ~%"
+References: ~%\
+FileSize: ~a~%"
item
(uri-encode (basename item))
(bytevector->nix-base32-string
(path-info-hash info))
+ (path-info-nar-size info)
(path-info-nar-size info)))
(signature (base64-encode
(string->utf8
@@ -323,6 +327,7 @@ References: ~%"
("Compression" . "gzip"))
200 ;nar/gzip/…
#t ;Content-Length
+ #t ;FileSize
200) ;nar/…
(call-with-temporary-directory
(lambda (cache)
@@ -350,11 +355,19 @@ References: ~%"
(basename %item) ".nar"))
(response (http-get url)))
(and (= 404 (response-code response))
+
+ ;; We should get an explicitly short TTL for 404 in this case
+ ;; because it's going to become 200 shortly.
+ (match (assq-ref (response-headers response) 'cache-control)
+ ((('max-age . ttl))
+ (< ttl 3600)))
+
(wait-for-file cached)
- (let ((body (http-get-port url))
- (compressed (http-get nar-url))
- (uncompressed (http-get (string-append base "nar/"
- (basename %item)))))
+ (let* ((body (http-get-port url))
+ (compressed (http-get nar-url))
+ (uncompressed (http-get (string-append base "nar/"
+ (basename %item))))
+ (narinfo (recutils->alist body)))
(list (file-exists? nar)
(filter (lambda (item)
(match item
@@ -362,10 +375,13 @@ References: ~%"
(("StorePath" . _) #t)
(("URL" . _) #t)
(_ #f)))
- (recutils->alist body))
+ narinfo)
(response-code compressed)
(= (response-content-length compressed)
(stat:size (stat nar)))
+ (= (string->number
+ (assoc-ref narinfo "FileSize"))
+ (stat:size (stat nar)))
(response-code uncompressed)))))))))
(test-end "publish")
diff --git a/tests/store.scm b/tests/store.scm
index 3eb8b7be5a..45aeb329b0 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -758,8 +758,9 @@
(cut export-paths %store (list file) <>))))
(delete-paths %store (list file))
- ;; Flip a bit in the stream's payload.
- (let* ((index (quotient (bytevector-length dump) 4))
+ ;; Flip a bit in the stream's payload. INDEX here falls in the middle of
+ ;; the file contents in DUMP, regardless of the store prefix.
+ (let* ((index #x70)
(byte (bytevector-u8-ref dump index)))
(bytevector-u8-set! dump index (logxor #xff byte)))
diff --git a/tests/ui.scm b/tests/ui.scm
index cfe417d497..1e98e3534b 100644
--- a/tests/ui.scm
+++ b/tests/ui.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -189,6 +189,10 @@ 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"))