modified system-tests/gnome-desktop.scm @@ -5,18 +5,61 @@ (define-module (system-tests gnome-desktop) #:use-module (gnu services desktop) #:use-module (gnu services) - #:use-module (gnu system vm) #:use-module (gnu system) + #:use-module (gnu system shadow) + #:use-module (gnu system vm) #:use-module (gnu tests) #:use-module (guix gexp) - #:use-module (guix modules)) + #:use-module (guix git-download) + #:use-module (guix modules) + #:use-module (guix store) + #:use-module (guix derivations) + #:use-module (guix utils) + #:use-module (guix transformations)) -(define gnome-desktop-operating-system - (operating-system - (inherit %simple-os) - (services - (cons* (service gnome-desktop-service-type) - %desktop-services)))) +;;; For a manual test/inspection: +#;( + +$(./pre-inst-env guix system vm --no-grafts \ +-e "(@@ (system-tests gnome-desktop) gnome-desktop-os)") \ +-display gtk,gl=on -m 1024 + +) + +(define source-checkout + (local-file + ".." "gnome-session-shepherd-checkout" + #:recursive? #t + #:select? (git-predicate + (or (false-if-exception (dirname (current-source-directory))) + (begin ;XXX: for REPL + (format (current-warning-port) + "assuming CWD is at root of project~%") + (getcwd)))))) + +(define current-source-checkout + (with-store store + (run-with-store store (lower-object source-checkout)))) + +(define with-this-gnome-session-shepherd + (options->transformation + `((with-source . ,(string-append "gnome-session-shepherd=" + current-source-checkout))))) + +(define gnome-desktop-os + (with-this-gnome-session-shepherd + (operating-system + (inherit %simple-os) + (users (cons (user-account + (name "alice") + (password "") + (comment "Bob's sister") + (group "users") + (supplementary-groups '("wheel" "audio" "video"))) + %base-user-accounts)) + (services + (cons* (service gnome-desktop-service-type) + %desktop-services))))) (define (run-gnome-desktop-test os vm) (gexp->derivation @@ -90,12 +133,14 @@ (description "Test whether we can log in and log out of the GNOME desktop") (value (let* ((os (marionette-operating-system - gnome-desktop-operating-system + gnome-desktop-os #:imported-modules (source-module-closure '((shepherd comm)) #:select? (lambda (name) (eq? 'shepherd (car name)))))) - (vm (virtual-machine os))) + (vm (virtual-machine + (operating-system os) + (memory-size 1024)))) (run-gnome-desktop-test (virtualized-operating-system os '()) #~(list #$vm)))))) [back]