aboutsummaryrefslogtreecommitdiff
path: root/etc/system-tests.scm
blob: 1085deed24b91a4587e848f5cb9b7403745c9b74 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2018, 2019, 2020 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/>.

(use-modules (gnu tests)
             (gnu packages package-management)
             ((gnu ci) #:select (channel-source->package))
             ((guix git-download) #:select (git-predicate))
             ((guix utils) #:select (current-source-directory))
             (git)
             (ice-9 match))

(define (source-commit directory)
  "Return the commit of the head of DIRECTORY or #f if it could not be
determined."
  (let ((repository #f))
    (catch 'git-error
      (lambda ()
        (set! repository (repository-open directory))
        (let* ((head   (repository-head repository))
               (target (reference-target head))
               (commit (oid->string target)))
          (repository-close! repository)
          commit))
      (lambda _
        (when repository
          (repository-close! repository))
        #f))))

(define (tests-for-current-guix source commit)
  "Return a list of tests for perform, using Guix built from SOURCE, a channel
instance."
  ;; 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
  (parameterize ((current-guix-package
                  (channel-source->package source #:commit commit)))
    (match (getenv "TESTS")
      (#f
       (all-system-tests))
      ((= string-tokenize (tests ...))
       (filter (lambda (test)
                 (member (system-test-name test) tests))
               (all-system-tests))))))

(define (system-test->manifest-entry test)
  "Return a manifest entry for TEST, a system test."
  (manifest-entry
    (name (string-append "test." (system-test-name test)))
    (version "0")
    (item test)))

(define (system-test-manifest)
  "Return a manifest containing all the system tests, or all those selected by
the 'TESTS' environment variable."
  (define source
    (string-append (current-source-directory) "/.."))

  (define commit
    ;; Fetch the current commit ID so we can potentially build the same
    ;; derivation as ci.guix.gnu.org.
    (source-commit source))

  ;; Intern SOURCE so that 'build-from-source' in (guix channels) sees
  ;; "fresh" file names and thus doesn't find itself loading .go files
  ;; from ~/.cache/guile when it loads 'build-aux/build-self.scm'.
  (let* ((source (local-file source
                             (if commit
                                 (string-append "guix-"
                                                (string-take commit 7))
                                 "guix-source")
                             #:recursive? #t
                             #:select?
                             (or (git-predicate source)
                                 (const #t))))
         (tests  (tests-for-current-guix source commit)))
    (format (current-error-port) "Selected ~a system tests...~%"
            (length tests))

    (manifest (map system-test->manifest-entry tests))))

;; Return the manifest.
(system-test-manifest)
root-installation-script, %test-f2fs-root-os): New variables. Danny Milosavljevic 2020-04-30Merge branch 'master' into core-updates... Conflicts: gnu/local.mk gnu/packages/backup.scm gnu/packages/emacs-xyz.scm gnu/packages/guile.scm gnu/packages/lisp.scm gnu/packages/openldap.scm gnu/packages/package-management.scm gnu/packages/web.scm gnu/packages/xorg.scm Marius Bakke 2020-04-29tests: install: Fix device usage....This is a follow-up of a860eddbbddeae5d3b6fe084e29ac9fafd2d6f02. Guided installation tests are now run from an ISO image. Hence the main block device is vda and not vdb anymore. * gnu/tests/install.scm (installation-target-os-for-gui-tests): Use %minimal-os-on-vda instead of %minimal-os. (%minimal-os-on-vda): Make sure that it replicates the config of %minimal-os. Mathieu Othacehe 2020-04-29tests: install: Fix gui-installed-os test....This is a follow-up of a860eddbbddeae5d3b6fe084e29ac9fafd2d6f02. If using an ISO, the main disk is vda and not vdb anymore. * gnu/tests/install.scm (installation-target-os-for-gui-tests): Use vda2 as swap partition. Mathieu Othacehe 2020-04-29tests: install: Increase virtual machine RAM....It seems that 'guix system init' is consuming more than the 800M of RAM currently allocated. Until this is understood, bump the limit to 1.2G. Reported here: https://lists.gnu.org/archive/html/bug-guix/2020-04/msg00519.html * gnu/tests/install.scm (run-install): Bump RAM to 1.2G. Mathieu Othacehe 2020-04-26tests: Add 'guile-final' to the installation test GC roots....* gnu/tests/install.scm (run-install): Add GUILE-FINAL to OPERATING-SYSTEM-WITH-GC-ROOTS. Marius Bakke 2020-04-10tests: Run guided installation tests from an ISO image....* gnu/tests/install.scm (guided-installation-test): Pass #:installation-disk-image-file-system-type to 'run-install'. Ludovic Courtès 2020-04-08tests: Mark VM images as non-substitutable....* gnu/tests/install.scm (run-install): Pass #:substitutable? to 'system-disk-image' and to 'gexp->derivation'. Ludovic Courtès 2020-03-26tests: install: Add %test-gui-installed-desktop-os-encrypted....* gnu/tests/install.scm (gui-test-program): Add a desktop? argument, and pass it to choose-services, (installation-target-os-for-gui-tests): new procedure, (installation-target-desktop-os-for-gui-tests): new procedure, (guided-installation-test): add target-os and desktop? arguments. Use target-os instead of the previous os variable. Pass desktop? argument to gui-test-program. (%test-gui-installed-os): Adapt accordingly, (%test-gui-installed-os-encrypted): ditto, (%test-gui-installed-desktop-os-encrypted): new exported variable. Mathieu Othacehe 2020-03-22tests: install: Abort when one installation step fails....When marionette-eval calls fail in gui-test-program,2019-03-18Correct name and email address for ng0....* .mailmap, Makefile.am, doc/guix.de.texi, doc/guix.fr.texi, doc/guix.texi, etc/completion/fish/guix.fish, gnu/packages/accessibility.scm, gnu/packages/admin.scm, gnu/packages/audio.scm, gnu/packages/autotools.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/cinnamon.scm, gnu/packages/compression.scm, gnu/packages/crypto.scm, gnu/packages/databases.scm, gnu/packages/django.scm, gnu/packages/dns.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/emacs.scm, gnu/packages/enlightenment.scm, gnu/packages/erlang.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/forth.scm, gnu/packages/fvwm.scm, gnu/packages/games.scm, gnu/packages/gl.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm, gnu/packages/gnuzilla.scm, gnu/packages/gtk.scm, gnu/packages/guile-wm.scm,gnu/packages/guile-xyz.scm, gnu/packages/haskell-check.scm, gnu/packages/haskell-crypto.scm, gnu/packages/haskell.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/irc.scm, gnu/packages/language.s2020-03-05tests: install: Add %test-gui-installed-os-encrypted....* gnu/tests/install.scm (%test-gui-installed-os-encrypted): New variable, (guided-installation-test): set a swap-device only if there is no encryption. Mathieu Othacehe 2020-03-05tests: install: Add "gui-installed-os"....* gnu/installer/tests.scm: New file. * gnu/local.mk (INSTALLER_MODULES): Add it. * gnu/tests/install.scm (run-install): Add #:gui-test. Add (gnu installer tests) to the marionette imported modules. Honor GUI-TEST. Check whether SCRIPT is true. (%root-password, %syslog-conf): New variable. (operating-system-with-console-syslog, gui-test-program) (guided-installation-test): New procedures. (%extra-packages, installation-os-for-gui-tests) (%test-gui-installed-os): New variable. Ludovic Courtès 2020-02-22tests: Factorize LUKS passphrase....* gnu/tests/i2018-11-06bash completion: Restore completion of available packages for 'guix build'....Fixes a regression introduced in 9b0a755f642542dd96065ad05ec9d844d8077fd7 whereby 'guix build TAB' would not suggest any completion. * etc/completion/bash/guix (_guix_complete): Arrange so 'guix build TAB' completes available packages. Ludovic Courtès nitrd-modules]: Add "raid1" instead of "raid0". (%raid-root-installation-script): Make the partitions twice as big. Invoke 'mdadm' with '--level=mirror' instead of '--level=stripe'; connect "yes" to its stdin. (%test-raid-root-os): Set #:target-size to 2.8 GiB. Ludovic Courtès 2020-01-03tests: install: Test a JFS root file system....* gnu/tests/install.scm (%jfs-root-os, %jfs-root-installation-script) (%test-jfs-root-os): New variables. Tobias Geerinckx-Rice 2019-11-18tests: install: Fix typo....* gnu/tests/install.scm (run-install): Fix typo in docstring. Maxim Cournoyer 2019-11-06tests: install: Increase root partition size....1.2G had become slightly too small on x86_64. This is a followup to 8dfb0c969e513276c632b8d26fb3601fa02993ca. * gnu/tests/install.scm (%simple-installation-script) (%extlinux-gpt-installation-script) (%simple-installation-script-for-/dev/vda): Switch from 1.2G to 1.4G. Ludovic Courtès 2019-07-06tests: encrypted-root-os: Increase root partition size....1.2G had become slightly too small on x86_64. * gnu/tests/install.scm (%encrypted-root-installation-script): Increase root partition size to 1.3G. Ludovic Courtès 2019-06-24tests: Import (guix build utils) in the marionette....* gnu/tests/install.scm (%minimal-os)[marionette-configuration](imported-modules): Add (guix build utils). * gnu/tests/base.scm (run-basic-test)["skeletons in home directories"]: Use (guix build utils) explicitly. Ludovic Courtès 2019-05-15system: Add 'operating-system-with-gc-roots'....* gnu/tests/install.scm (operating-system-with-gc-roots): Move to... * gnu/system.scm (operating-system-with-gc-roots): ... here. New procedure. Ludovic Courtès 2019-04-14tests: separate-store-os: Increase root partition size....* gnu/tests/install.scm (%separate-store-installation-script): Increase size of the root partition so that it's big enough to contain downloaded nars and temporary files. Add 'df -h /mnt/gnu'. Ludovic Courtès 2019-03-25accounts: Add default value for the 'home-directory' field of <user-account>....* gnu/system/accounts.scm (<user-account>)[home-directory]: Mark as thunked and add a default value. (default-home-directory): New procedure. * doc/guix.texi (User Accounts): Remove 'home-directory' from example. * gnu/system/examples/bare-bones.tmpl: Likewise. * gnu/system/examples/beaglebone-black.tmpl: Likewise. * gnu/system/examples/desktop.tmpl: Likewise. * gnu/system/examples/docker-image.tmpl: Likewise. * gnu/system/examples/lightweight-desktop.tmpl: Likewise. * gnu/system/install.scm (installation-os): Likewise. * gnu/tests.scm (%simple-os): Likewise. * gnu/tests/install.scm (%minimal-os, %minimal-os-on-vda): (%separate-home-os, %encrypted-root-os, %btrfs-root-os): Likewise. * tests/accounts.scm ("allocate-passwd") ("allocate-passwd with previous state"): Likewise. Ludovic Courtès 2019-03-13Remove traces of "GuixSD"....* gnu/bootloader/extlinux.scm (extlinux-configuration-file): Remove mentions of "GuixSD". * gnu/bootloader/grub.scm (install-grub-efi): Likewise. * gnu/build/vm.scm (make-iso9660-image): Change default #:volume-id to "Guix_image". (initialize-hard-disk): Search for the "Guix_image" label. * gnu/ci.scm (system-test-jobs, tarball-jobs): Remove "GuixSD". * gnu/installer/newt/welcome.scm (run-welcome-page): Likewise. * gnu/packages/audio.scm (supercollider)[description]: Likewise. * gnu/packages/curl.scm (curl): Likewise. * gnu/packages/emacs.scm (emacs): Likewise. * gnu/packages/gnome.scm (network-manager): Likewise. * gnu/packages/julia.scm (julia): Likewise. * gnu/packages/linux.scm (alsa-plugins): Likewise. (powertop, wireless-regdb): Likewise. * gnu/packages/package-management.scm (guix): Likewise. * gnu/packages/polkit.scm (polkit): Likewise. * gnu/packages/tex.scm (texlive-bin): Likewise. * gnu/services/base.scm (file-systems->fstab): Likewise. * gnu/services/cups.scm (%cups-activation): Likewise. * gnu/services/mail.scm (%dovecot-activation): Likewise. * gnu/services/messaging.scm (prosody-configuration)[log]: Likewise. * gnu/system/examples/vm-image.tmpl (vm-image-motd): Likewise. * gnu/system/install.scm (installation-os)[file-systems]: Change root file system label to "Guix_image". * gnu/system/mapped-devices.scm (check-device-initrd-modules): Remove "GuixSD". * gnu/system/vm.scm (system-docker-image): Likewise. (system-disk-image)[root-label]: Change to "Guix_image". * gnu/tests/install.scm (run-install): Remove "GuixSD". * guix/modules.scm (guix-module-name?): Likewise. * nix/libstore/optimise-store.cc: Likewise. Ludovic Courtès 2019-01-22gnu: Remove duplicate record fields....* gnu/packages/haskell.scm (ghc-case-insensitive): Remove duplicate 'inputs' field. * gnu/packages/python-xyz.scm (python2-pysnptools): Remove duplicate 'native-inputs' field. * gnu/tests/install.scm (%separate-home-os): Remove duplicate 'type' field. Ludovic Courtès 2019-01-17tests: Rename %test-encrypted-os to %test-encrypted-root-os....* gnu/tests/install.scm (%test-encrypted-os): Rename to %test-encrypted-root-os for consistency with its system-test name. Mathieu Othacehe 2018-12-04tests: Increase root partitions size to 1.2G....The system closure has grown slightly above 1GiB so adjust accordingly. * gnu/tests/install.scm (%simple-installation-script): Increase vdb2 size of 1.2G, (%extlinux-gpt-installation-script); ditto (%simple-installation-script-for-/dev/vda): ditto, (%separate-store-installation-script): ditto for vdb3, (%encrypted-root-installation-script): ditto. Ludovic Courtès 2018-05-28system: Remove uses of the 'title' field of <file-system>....* gnu/system/install.scm (installation-os): Remove uses of the 'title' field of 'file-system'; use 'file-system-label' as appropriate. * gnu/system/vm.scm (system-disk-image, system-qemu-image): Likewise. * gnu/tests.scm (%simple-os): Likewise. * gnu/tests/install.scm (%minimal-os, %minimal-extlinux-os) (%minimal-os-on-vda, %separate-home-os, %separate-store-os) (%raid-root-os, %encrypted-root-os, %btrfs-root-os): Likewise. * gnu/build/shepherd.scm (default-mounts)[tmpfs]: Likewise. * tests/guix-system.sh: Likewise. * tests/system.scm (%root-fs): Likewise. ("operating-system-boot-mapped-devices, implicit dependency"): Likewise. Ludovic Courtès 2018-03-02system: Add 'initrd-modules' field....* gnu/system.scm (<operating-system>)[initrd-modules]: New field. (operating-system-initrd-file): Pass #:linux-modules to 'make-initrd'. * gnu/system/linux-initrd.scm (default-initrd-modules): New procedure. (%base-initrd-modules): New macro. (base-initrd): Add #:linux-modules and honor it. * gnu/system/install.scm (embedded-installation-os): Use 'initrd-modules' instead of 'initrd'. * gnu/tests/install.scm (%raid-root-os): Likewise. * doc/guix.texi (operating-system Reference): Add 'initrd-modules'. (Initial RAM Disk): Document it. Adjust example to not use #:extra-modules. Ludovic Courtès