~ruther/guix-local

14da91e2f0de4c8a7e1f3b706cc5d961030ff190 — Ludovic Courtès 13 years ago 81c7948
tests: Use bootstrap and Nixpkgs inputs to be less costly.

* tests/builders.scm (%bootstrap-inputs, %bootstrap-guile): New
  variables.
  ("gnu-build"): Use them, by setting `#:implicit-inputs? #f' and `#:guile'.

* tests/packages.scm (%bootstrap-inputs, %bootstrap-guile): New
  variables.
  ("trivial"): Pass `#:guile %bootstrap-guile'.
  ("GNU Hello"): Use `package-with-explicit-inputs' to use
  %BOOTSTRAP-GUILE and %BOOTSTRAP-INPUTS.
2 files changed, 40 insertions(+), 9 deletions(-)

M tests/builders.scm
M tests/packages.scm
M tests/builders.scm => tests/builders.scm +17 -1
@@ 32,6 32,18 @@
(define %store
  (false-if-exception (open-connection)))

(define %bootstrap-inputs
  ;; Derivations taken from Nixpkgs, so that the initial tests don't
  ;; take forever.
  (and (file-exists? (%nixpkgs-directory))
       `(("make" ,(nixpkgs-derivation "gnumake"))
         ("diffutils" ,(nixpkgs-derivation "diffutils"))
         ,@(@@ (distro packages base) %bootstrap-inputs))))

(define %bootstrap-guile
  (@@ (distro packages base) %bootstrap-guile))


(test-begin "builders")

(test-assert "http-fetch"


@@ 48,13 60,17 @@
  (and (build-system? gnu-build-system)
       (eq? gnu-build (build-system-builder gnu-build-system))))

(test-skip (if (file-exists? (%nixpkgs-directory)) 1 0))

(test-assert "gnu-build"
  (let* ((url      "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")
         (hash     (nix-base32-string->bytevector
                    "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))
         (tarball  (http-fetch %store url 'sha256 hash))
         (build    (gnu-build %store "hello-2.8" tarball
                              `(("gawk" ,(nixpkgs-derivation "gawk")))))
                              %bootstrap-inputs
                              #:implicit-inputs? #f
                              #:guile %bootstrap-guile))
         (out      (derivation-path->output-path build)))
    (and (build-derivations %store (list (pk 'hello-drv build)))
         (valid-path? %store out)

M tests/packages.scm => tests/packages.scm +23 -8
@@ 35,6 35,18 @@
(define %store
  (false-if-exception (open-connection)))

(define %bootstrap-inputs
  ;; Derivations taken from Nixpkgs, so that the initial tests don't
  ;; take forever.
  (and (file-exists? (%nixpkgs-directory))
       `(("make" ,(nixpkgs-derivation "gnumake"))
         ("diffutils" ,(nixpkgs-derivation "diffutils"))
         ,@(@@ (distro packages base) %bootstrap-inputs))))

(define %bootstrap-guile
  (@@ (distro packages base) %bootstrap-guile))


(test-begin "packages")

(define-syntax-rule (dummy-package name* extra-fields ...)


@@ 70,7 82,8 @@
              (build-system trivial-build-system)
              (source #f)
              (arguments
               '(#:builder
               `(#:guile ,%bootstrap-guile
                 #:builder
                 (begin
                   (mkdir %output)
                   (call-with-output-file (string-append %output "/test")


@@ 83,13 96,15 @@
                   (call-with-input-file (string-append p "/test") read))))))

(test-assert "GNU Hello"
  (and (package? hello)
       (or (location? (package-location hello))
           (not (package-location hello)))
       (let* ((drv (package-derivation %store hello))
              (out (derivation-path->output-path drv)))
         (and (build-derivations %store (list drv))
              (file-exists? (string-append out "/bin/hello"))))))
  (let ((hello (package-with-explicit-inputs hello %bootstrap-inputs
                                             #:guile %bootstrap-guile)))
    (and (package? hello)
         (or (location? (package-location hello))
             (not (package-location hello)))
         (let* ((drv (package-derivation %store hello))
                (out (derivation-path->output-path drv)))
           (and (build-derivations %store (list drv))
                (file-exists? (string-append out "/bin/hello")))))))

(test-assert "find-packages-by-name"
  (match (find-packages-by-name "hello")