diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/cran.scm | 6 | ||||
-rw-r--r-- | tests/discovery.scm | 52 | ||||
-rw-r--r-- | tests/guix-build.sh | 1 | ||||
-rw-r--r-- | tests/publish.scm | 32 | ||||
-rw-r--r-- | tests/store.scm | 5 | ||||
-rw-r--r-- | tests/ui.scm | 6 |
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")) |