;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2024 Richard Sent . ;;; ;;; 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 . (define-module (gnu tests sddm) #:use-module (gnu bootloader) #:use-module (gnu bootloader grub) #:use-module (gnu packages) #:use-module (gnu packages ocr) #:use-module (gnu packages xorg) #:use-module (gnu services) #:use-module (gnu services desktop) #:use-module (gnu services sddm) #:use-module (gnu services xorg) #:use-module (gnu system) #:use-module (gnu system vm) #:use-module (gnu tests) #:use-module (guix gexp) #:use-module (guix modules) #:use-module (srfi srfi-1) #:export (%test-sddm)) (define %sddm-os (operating-system (inherit %simple-os) (services (cons* (service sddm-service-type) (modify-services %desktop-services (delete gdm-service-type)))))) (define (run-sddm-test) "Run tests in %SDDM-OS." (define os (marionette-operating-system %sddm-os #:imported-modules (source-module-closure '((gnu services herd))))) (define vm (virtual-machine (operating-system os) ;; Test may nondeterministically fail with default memory size. (memory-size 1024))) (define test (with-imported-modules (source-module-closure '((gnu build marionette))) #~(begin (use-modules (gnu build marionette) (srfi srfi-26) (srfi srfi-64)) (let ((marionette (make-marionette (list #$vm)))) (test-runner-current (system-test-runner #$output)) (test-begin "sddm") (test-assert "service is running" (marionette-eval '(begin (use-modules (gnu services herd)) ;; sddm's shepherd service is called xorg-server (start-service 'xorg-server)) marionette)) (test-assert "service can be stopped" (marionette-eval '(begin (use-modules (gnu services herd)) (stop-service 'xorg-server)) marionette)) (test-assert "service can be restarted" (marionette-eval '(begin (use-modules (gnu services herd)) (restart-service 'xorg-server)) marionette)) (test-assert "login screen up" ;; GNU Ocrad fails to recognize any text, so use Tesseract. (wait-for-screen-text marionette ;; Login button not recognized, use SDDM's ;; welcome message. (cut string-contains <> "Select your user and enter password") #:ocr #$(file-append tesseract-ocr "/bin/tesseract") #:timeout 60)) (test-end))))) (gexp->derivation "sddm-test" test)) (define %test-sddm (system-test (name "sddm") (description "Basic tests for the SDDM service.") (value (run-sddm-test)))) stem grub) and replace by (gnu bootloader) and (gnu bootloader grub) modules. * gnu/system/grub.scm: Moved content to gnu/bootloader/grub.scm. * gnu/system/vm: Replace (gnu system grub) module by (gnu bootloader). * gnu/tests.scm: Ditto. * gnu/tests/nfs.scm: Ditto. Mathieu Othacehe 2016-04-18system: Add (gnu system mapped-devices)....* gnu/system/file-systems.scm (<mapped-device>, <mapped-device-type>): Move to... * gnu/system/mapped-devices.scm: ... here. New file. * gnu/system.scm, gnu/services/base.scm, gnu/system/linux-initrd.scm: Use it. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * gnu.scm (%public-modules): Add it. Ludovic Courtès 2015-11-03system: Rename (gnu system linux) to (gnu system pam)....* gnu/system/linux.scm: Rename to... * gnu/system/pam.scm: ... this. * gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly. * gnu.scm, gnu/services/base.scm, gnu/services/desktop.scm, gnu/services/networking.scm, gnu/services/ssh.scm, gnu/services/xorg.scm, gnu/system.scm, gnu/system/vm.scm: Likewise. Ludovic Courtès 2015-02-04system: Add bindings to configure libc's NSS....* gnu/system/nss.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * gnu.scm (%public-modules): Add it. * gnu/system.scm (<operating-system>)[name-service-switch]: New field. (etc-directory): Add #:nss parameter and honor it. (operating-system-etc-directory): Adjust call accordingly. * doc/guix.texi (operating-system Reference): Document 'name-service-switch'. (Name Service Switch): New section. Ludovic Courtès 2015-01-22gnu: Add convenience macros to make module imports more concise....* gnu.scm (use-package-modules, use-service-modules, use-system-modules): New macros. Joshua S. Grant