aboutsummaryrefslogtreecommitdiff
path: root/tests/system.scm
blob: 9416b950e6ab2bc9918eb163dd00f944ebeeb27e (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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; 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-system)
  #:use-module (gnu)
  #:use-module ((gnu services) #:select (service-value))
  #:use-module (guix store)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64))

;; Test the (gnu system) module.

(define %root-fs
  (file-system
    (device (file-system-label "my-root"))
    (mount-point "/")
    (type "ext4")))

(define %os
  (operating-system
    (host-name "komputilo")
    (timezone "Europe/Berlin")
    (locale "en_US.utf8")
    (bootloader (bootloader-configuration
                 (bootloader grub-bootloader)
                 (target "/dev/sdX")))
    (file-systems (cons %root-fs %base-file-systems))

    (users %base-user-accounts)))

(define %luks-device
  (mapped-device
   (source "/dev/foo") (target "my-luks-device")
   (type luks-device-mapping)))

(define %os-with-mapped-device
  (operating-system
    (host-name "komputilo")
    (timezone "Europe/Berlin")
    (locale "en_US.utf8")
    (bootloader (bootloader-configuration
                 (bootloader grub-bootloader)
                 (target "/dev/sdX")))
    (mapped-devices (list %luks-device))
    (file-systems (cons (file-system
                          (inherit %root-fs)
                          (dependencies (list %luks-device)))
                        %base-file-systems))
    (users %base-user-accounts)))


(test-begin "system")

(test-assert "operating-system-store-file-system"
  ;; %BASE-FILE-SYSTEMS defines a bind-mount for /gnu/store, but this
  ;; shouldn't be a problem.
  (eq? %root-fs
       (operating-system-store-file-system %os)))

(test-assert "operating-system-store-file-system, prefix"
  (let* ((gnu (file-system
                (device "foobar")
                (mount-point (dirname (%store-prefix)))
                (type "ext5")))
         (os  (operating-system
                (inherit %os)
                (file-systems (cons* gnu %root-fs
                                     %base-file-systems)))))
    (eq? gnu (operating-system-store-file-system os))))

(test-assert "operating-system-store-file-system, store"
  (let* ((gnu (file-system
                (device "foobar")
                (mount-point (%store-prefix))
                (type "ext5")))
         (os  (operating-system
                (inherit %os)
                (file-systems (cons* gnu %root-fs
                                     %base-file-systems)))))
    (eq? gnu (operating-system-store-file-system os))))

(test-equal "operating-system-user-mapped-devices"
  '()
  (operating-system-user-mapped-devices %os-with-mapped-device))

(test-equal "operating-system-boot-mapped-devices"
  (list %luks-device)
  (operating-system-boot-mapped-devices %os-with-mapped-device))

(test-equal "operating-system-boot-mapped-devices, implicit dependency"
  (list %luks-device)

  ;; Here we expect the implicit dependency between "/" and
  ;; "/dev/mapper/my-luks-device" to be found, in spite of the lack of a
  ;; 'dependencies' field in the root file system.
  (operating-system-boot-mapped-devices
   (operating-system
     (inherit %os-with-mapped-device)
     (file-systems (cons (file-system
                           (device "/dev/mapper/my-luks-device")
                           (mount-point "/")
                           (type "ext4"))
                         %base-file-systems)))))

(test-equal "non-boot-file-system-service"
  '()

  ;; Make sure that mapped devices with at least one needed-for-boot user are
  ;; handled exclusively from the initrd.  See <https://bugs.gnu.org/31889>.
  (append-map file-system-dependencies
              (service-value
               ((@@ (gnu system) non-boot-file-system-service)
                (operating-system
                  (inherit %os-with-mapped-device)
                  (file-systems
                   (list (file-system
                           (mount-point "/foo/bar")
                           (device "qux:baz")
                           (type "none")
                           (dependencies (list %luks-device)))
                         (file-system
                           (device (file-system-label "my-root"))
                           (mount-point "/")
                           (type "ext4")
                           (dependencies (list %luks-device))))))))))

(test-end)
13gnu: Simplify package inputs....This commit was obtained by running: ./pre-inst-env guix style without any additional argument. Ludovic Courtès 2021-11-29gnu: agg: Fix build....* gnu/packages/patches/agg-2.5-gcc8.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/graphics.scm (agg)[source]: Use it. Mathieu Othacehe 2021-11-25gnu: lib2geom: Skip faulty test on i686....* gnu/packages/graphics.scm (lib2geom)[arguments]: When 'target-x86-32?', add 'skip-faulty-test' phase. Ludovic Courtès 2021-11-21gnu: blender: Update to 2.93.6....* gnu/packages/graphics.scm (blender): Update to 2.93.6. Ludovic Courtès 2021-11-18gnu: Move eglexternalplatform and egl-wayland to (gnu packages xorg)....This is to avoid a module cycle between (gnu packages xorg) and (gnu packages graphics). * gnu/packages/graphics.scm (eglexternalplatform, egl-wayland): Move to... * gnu/packages/xorg.scm: ... this file. Remove trailing #t. Maxim Cournoyer 2021-11-11gnu: lib2geom: Update to 1.1....* gnu/packages/graphics.scm (lib2geom): Update to 1.1. [source]: Remove patches, modules and snippet fields. [phases]: Remove trailing #t. * gnu/packages/patches/lib2geom-fix-tests.patch: Delete file. * gnu/local.mk (dist_patch_DATA): De-register it. Maxim Cournoyer 2021-11-08Merge remote-tracking branch 'origin/master' into core-updates-frozenEfraim Flashner 2021-11-04gnu: Remove openscenegraph-3.4....* gnu/packages/graphics.scm (openscenegraph-3.4): Remove variable. Efraim Flashner 2021-11-03Merge remote-tracking branch 'origin/master' into core-updates-frozenEfraim Flashner 2021-11-03gnu: pstoedit: Update to 3.77....* gnu/packages/graphics.scm (pstoedit): Update to 3.77. Tobias Geerinckx-Rice 2021-10-31Merge remote-tracking branch 'origin/master' into core-updates-frozenEfraim Flashner 2021-10-25gnu: OpenEXR 2: Move the snippet into a build phase....This snippet was just working around a quirk of the Guix build environment. * gnu/packages/graphics.scm (openexr-2)[origin]: Remove snippet. [arguments]: Add a 'patch-test-directory' phase. Leo Famulari 2021-10-25gnu: OpenEXR: Move the snippet into a build phase....This snippet was just working around a quirk of the Guix build environment. * gnu/packages/graphics.scm (openexr)[origin]: Remove snippet. [arguments]: Add a 'patch-test-directory' phase. Leo Famulari 2021-10-24gnu: blender: Use older TBB and update header variables....* gnu/packages/graphics.scm (blender)[inputs]: Replace tbb with tbb-2020. [arguments]: Don't set CPATH; set C_INCLUDE_PATH and CPLUS_INCLUDE_PATH instead. Ricardo Wurmus 2021-10-24gnu: openvdb: Use older version of TBB....* gnu/packages/graphics.scm (openvdb)[inputs]: Replace tbb with tbb-2020. Ricardo Wurmus 2021-10-23gnu: Add OpenEXR 3....* gnu/packages/graphics.scm (openexr): New variable. (openexr-2)[home-page]: Use home-page from openexr. [synopsis]: Use synopsis from openexr. [description]: Use description from openexr. [license]: Use license from openexr. Signed-off-by: Leo Famulari <leo@famulari.name> Vinicius Monego 2021-10-23gnu: Rename openexr to openexr-2....This is done so the OpenEXR package can be upgraded to version 3 in a later commit. * gnu/packages/graphics.scm (openexr): Rename to ... (openexr-2): ... new variable. (blender, blender-2.79, openimageio, povray)[inputs]: Adjust accordingly. (ctl)[propagated-inputs]: Likewise. * gnu/packages/animation.scm (synfig)[propagated-inputs]: Likewise. * gnu/packages/gimp.scm (gegl, gimp)[inputs]: Likewise. * gnu/packages/gstreamer.scm (gst-plugins-bad)[inputs]: Likewise. * gnu/packages/image-processing.scm (mia, opencolorio, opencv, vips, gmic, nip2)[inputs]: Likewise. * gnu/packages/image-viewers.scm (luminance-hdr)[inputs]: Likewise. * gnu/packages/image.scm (freeimage, vigra, devil)[inputs]: Likewise. * gnu/packages/kde-frameworks.scm (kimageformats)[inputs]: Likewise. * gnu/packages/kde.scm (krita)[inputs]: Likewise. * gnu/packages/photo.scm (enblend-enfuse, darktable, hugin)[inputs]: Likewise. Signed-off-by: Leo Famulari <leo@famulari.name> Vinicius Monego 2021-10-23gnu: Add imath....* gnu/packages/graphics.scm (imath): New variable. Signed-off-by: Leo Famulari <leo@famulari.name> Vinicius Monego 2021-10-19gnu: Add gr-framework....* gnu/packages/graphics.scm (gr-framework): New variable. Efraim Flashner 2021-10-12Merge remote-tracking branch 'origin/master' into core-updates-frozen.Mathieu Othacehe