;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Fredrik Salomonsson ;;; ;;; 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 (test build-emacs-utils) #:use-module (guix tests) #:use-module (guix build emacs-utils) #:use-module (guix build utils) #:use-module ((guix utils) #:select (call-with-temporary-directory)) #:use-module (ice-9 regex) #:use-module (srfi srfi-34) #:use-module (srfi srfi-64)) (test-begin "build-emacs-utils") ;; Only run the following tests if emacs is present. (test-skip (if (which "emacs") 0 5)) (test-equal "emacs-batch-script: print foo from emacs" "foo" (emacs-batch-script '(princ "foo"))) (test-assert "emacs-batch-script: raise &emacs-batch-error on failure" (guard (c ((emacs-batch-error? c) ;; The error message format changed between Emacs 27 and Emacs ;; 28. (string-match "[Ww]rong.*argument.*numberp.*\"three\"" (emacs-batch-error-message c)))) (emacs-batch-script '(mapcar 'number-to-string (list 1 2 "three"))))) (call-with-temporary-directory (lambda (directory) (let ((mock-elisp-file (string-append directory "/foo.el"))) (call-with-output-file mock-elisp-file (lambda (port) (display ";;; foo --- mock emacs package -*- lexical-binding: t -*- ;; Created: 4 Jun 2022 ;; Keywords: lisp test ;; Version: 1.0.0 ;;; Commentary: ;;; Code: ;;; foo.el ends here " port))) (test-equal "emacs-header-parse: fetch version" "1.0.0" (emacs-header-parse "version" mock-elisp-file)) (test-equal "emacs-header-parse: fetch keywords" "lisp test" (emacs-header-parse "keywords" mock-elisp-file)) (test-equal "emacs-header-parse: fetch nonexistent author" "nil" (emacs-header-parse "author" mock-elisp-file))))) (test-end "build-emacs-utils") a2b66a8299bedf5ea5d21b606006d94099745a&showmsg=1'>Expand)Author 2023-12-22shepherd: Remove ‘make-forkexec-constructor/container’....This was superseded by ‘least-authority-wrapper’. * gnu/build/shepherd.scm (read-pid-file/container) (make-forkexec-constructor/container): Remove. Change-Id: I6acccdff2609a35807608f865a4d381146113a88 Ludovic Courtès 2022-09-02shepherd: Set #o640 permissions for log file of service in container....* gnu/build/shepherd.scm (make-forkexec-constructor/container): Set #o640 permissions for log file. Arun Isaac 2022-05-01Add (guix least-authority)....* guix/least-authority.scm: New file. * Makefile.am (MODULES): Add it. * gnu/build/shepherd.scm (default-mounts): Make public. Ludovic Courtès 2022-04-12shepherd: Add #:supplementary-groups....To support the argument introduced in Shepherd 0.9.0 when defining container-bound services. * gnu/build/shepherd.scm (exec-command*) (make-forkexec-constructor/container): Add '#:supplementary-groups'. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Leo Nikkilä 2022-04-11shepherd: 'fork+exec-command/container' always returns a PID....Fixes a regression introduced in 938448bf40fc77092859352d2243e2d0c236375f whereby 'fork+exec-command/container' would return #t, then used as the running value of the 'guix-daemon' service in the installer. Upon installation completion, stopping the 'guix-daemon' service would fail with wrong-type-arg because that #t would be passed to the 'stop' method in lieu of a PID. * gnu/build/shepherd.scm (fork+exec-command/container): Return a PID rather than #t. Ludovic Courtès 2022-04-11shepherd: 'exec-command*' has a valid default #:directory....Fixes a regression introduced in 938448bf40fc77092859352d2243e2d0c236375f where 'exec-command*' could get #:directory #f, in particular when called by 'fork+exec-command/container'. * gnu/build/shepherd.scm (exec-command*): Add default value for #:directory. Ludovic Courtès 2022-04-07shepherd: Adjust 'fork+exec-command/container' for the Shepherd 0.9....* gnu/build/shepherd.scm (exec-command*): New procedure, with code formerly... (make-forkexec-constructor/container): ... here. Use it. (fork+exec-command/container): Use 'fork+exec-command' only when CONTAINER-SUPPORT? is false or PID is the current process. Ludovic Courtès