diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-06-27 09:30:01 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-06-27 09:30:01 +0200 |
commit | 01497dfe6c0a2ce69287d0fd0008747965a000df (patch) | |
tree | f7f6f53baf6e81a8bce26144c550da3bf4b9df5c /build-aux | |
parent | 74c8b174e8015de753ba5cab44f76f944e6fd4ba (diff) |
Merge branch 'master' into core-updates
Diffstat (limited to 'build-aux')
-rw-r--r-- | build-aux/hydra/evaluate.scm | 15 | ||||
-rw-r--r-- | build-aux/hydra/gnu-system.scm | 37 | ||||
-rw-r--r-- | build-aux/run-system-tests.scm | 24 | ||||
-rw-r--r-- | build-aux/test-env.in | 12 |
4 files changed, 75 insertions, 13 deletions
diff --git a/build-aux/hydra/evaluate.scm b/build-aux/hydra/evaluate.scm index afc7730ff2..ab10253f31 100644 --- a/build-aux/hydra/evaluate.scm +++ b/build-aux/hydra/evaluate.scm @@ -49,6 +49,17 @@ values." (/ (time-nanosecond time) 1e9))) (apply values results)))) +(define (assert-valid-job job thing) + "Raise an error if THING is not an alist with a valid 'derivation' entry. +Otherwise return THING." + (unless (and (list? thing) + (and=> (assoc-ref thing 'derivation) + (lambda (value) + (and (string? value) + (string-suffix? ".drv" value))))) + (error "job did not produce a valid alist" job thing)) + thing) + ;; Without further ado... (match (command-line) @@ -83,7 +94,9 @@ values." (map (lambda (job thunk) (format (current-error-port) "evaluating '~a'... " job) (force-output (current-error-port)) - (cons job (call-with-time-display thunk))) + (cons job + (assert-valid-job job + (call-with-time-display thunk)))) names thunks))) port)))) ((command _ ...) diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index d15be1bad2..a84cdebbad 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -59,6 +59,7 @@ (gnu system) (gnu system vm) (gnu system install) + (gnu tests) (srfi srfi-1) (srfi srfi-26) (ice-9 match)) @@ -129,6 +130,9 @@ SYSTEM." (file (string-append dir "/demo-os.scm"))) (read-operating-system file))) +(define %guixsd-supported-systems + '("x86_64-linux" "i686-linux")) + (define (qemu-jobs store system) "Return a list of jobs that build QEMU images for SYSTEM." (define (->alist drv) @@ -150,7 +154,7 @@ system.") (define MiB (expt 2 20)) - (if (member system '("x86_64-linux" "i686-linux")) + (if (member system %guixsd-supported-systems) (list (->job 'qemu-image (run-with-store store (mbegin %store-monad @@ -167,6 +171,36 @@ system.") (* 1024 MiB)))))) '())) +(define (system-test-jobs store system) + "Return a list of jobs for the system tests." + (define (test->thunk test) + (lambda () + (define drv + (run-with-store store + (mbegin %store-monad + (set-current-system system) + (set-grafting #f) + (set-guile-for-build (default-guile)) + (system-test-value test)))) + + `((derivation . ,(derivation-file-name drv)) + (description . ,(format #f "GuixSD '~a' system test" + (system-test-name test))) + (long-description . ,(system-test-description test)) + (license . ,gpl3+) + (home-page . ,%guix-home-page-url) + (maintainers . ("bug-guix@gnu.org"))))) + + (define (->job test) + (let ((name (string->symbol + (string-append "test." (system-test-name test) + "." system)))) + (cons name (test->thunk test)))) + + (if (member system %guixsd-supported-systems) + (map ->job (all-system-tests)) + '())) + (define (tarball-jobs store system) "Return Hydra jobs to build the self-contained Guix binary tarball." (define (->alist drv) @@ -274,6 +308,7 @@ valid." system)))) (append (filter-map job all) (qemu-jobs store system) + (system-test-jobs store system) (tarball-jobs store system) (cross-jobs system)))) ((core) diff --git a/build-aux/run-system-tests.scm b/build-aux/run-system-tests.scm index e98de9cb7e..3f3a70e7b4 100644 --- a/build-aux/run-system-tests.scm +++ b/build-aux/run-system-tests.scm @@ -17,13 +17,14 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (run-system-tests) - #:use-module (gnu tests base) + #:use-module (gnu tests) #:use-module (guix store) #:use-module (guix monads) #:use-module (guix derivations) #:use-module (guix ui) #:use-module (srfi srfi-1) #:use-module (srfi srfi-34) + #:use-module (ice-9 match) #:export (run-system-tests)) (define (built-derivations* drv) @@ -44,13 +45,26 @@ lst) (lift1 reverse %store-monad)))) -(define %system-tests - (list %test-basic-os)) - (define (run-system-tests . args) + (define tests + ;; Honor the 'TESTS' environment variable so that one can select a subset + ;; of tests to run in the usual way: + ;; + ;; make check-system TESTS=installed-os + (match (getenv "TESTS") + (#f + (all-system-tests)) + ((= string-tokenize (tests ...)) + (filter (lambda (test) + (member (system-test-name test) tests)) + (all-system-tests))))) + + (format (current-error-port) "Running ~a system tests...~%" + (length tests)) + (with-store store (run-with-store store - (mlet* %store-monad ((drv (sequence %store-monad %system-tests)) + (mlet* %store-monad ((drv (mapm %store-monad system-test-value tests)) (out -> (map derivation->output-path drv))) (mbegin %store-monad (show-what-to-build* drv) diff --git a/build-aux/test-env.in b/build-aux/test-env.in index c153763a56..1657556b19 100644 --- a/build-aux/test-env.in +++ b/build-aux/test-env.in @@ -69,16 +69,16 @@ then fi # The configuration directory, for import/export signing keys. - NIX_CONF_DIR="@GUIX_TEST_ROOT@/etc" - if [ ! -d "$NIX_CONF_DIR" ] + GUIX_CONFIGURATION_DIRECTORY="@GUIX_TEST_ROOT@/etc" + if [ ! -d "$GUIX_CONFIGURATION_DIRECTORY" ] then # Copy the keys so that the secret key has the right permissions (the # daemon errors out when this is not the case.) - mkdir -p "$NIX_CONF_DIR" + mkdir -p "$GUIX_CONFIGURATION_DIRECTORY" cp "@abs_top_srcdir@/tests/signing-key.sec" \ "@abs_top_srcdir@/tests/signing-key.pub" \ - "$NIX_CONF_DIR" - chmod 400 "$NIX_CONF_DIR/signing-key.sec" + "$GUIX_CONFIGURATION_DIRECTORY" + chmod 400 "$GUIX_CONFIGURATION_DIRECTORY/signing-key.sec" fi # A place to store data of the substituter. @@ -100,7 +100,7 @@ then NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR \ NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL \ GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \ - NIX_CONF_DIR XDG_CACHE_HOME NIXPKGS + GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME NIXPKGS # Launch the daemon without chroot support because is may be # unavailable, for instance if we're not running as root. |