tests: Use bootstrap and Nixpkgs inputs to be less costly.
authorLudovic Courtès <ludo@gnu.org>
Fri, 5 Oct 2012 23:24:46 +0000 (01:24 +0200)
committerLudovic Courtès <ludo@gnu.org>
Sun, 7 Oct 2012 20:24:59 +0000 (22:24 +0200)
* 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.

tests/builders.scm
tests/packages.scm

index 762944b..629c88c 100644 (file)
 (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))
+
+\f
 (test-begin "builders")
 
 (test-assert "http-fetch"
   (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)
index 20f586e..1319bf8 100644 (file)
 (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))
+
+\f
 (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")
                    (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")