;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès ;;; ;;; 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-services) #:use-module (gnu services) #:use-module (gnu services herd) #:use-module (gnu services shepherd) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-64) #:use-module (ice-9 match)) (test-begin "services") (test-equal "services, default value" '(42 123 234 error) (let* ((t1 (service-type (name 't1) (extensions '()))) (t2 (service-type (name 't2) (extensions '()) (de
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-03-02 16:15:07 +0100
committerWojtek Kosior <koszko@koszko.org>2022-03-02 16:15:07 +0100
commit4eb22719e43d1217a7629d5c4d82df7eafb24c68 (patch)
tree204da5f08d6cbd5af1a1744505bd56c63ccc436b /.gitignore
parent1cb6aaae2055283d04aa0aa581e82addb8049ce4 (diff)
downloadhaketilo-hydrilla-4eb22719e43d1217a7629d5c4d82df7eafb24c68.tar.gz
haketilo-hydrilla-4eb22719e43d1217a7629d5c4d82df7eafb24c68.zip
mention PyPI freedom issues in README
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions
(== (list s1 s2 s3) (instantiate-missing-services (list s2 s3)))))) (test-assert "instantiate-missing-services, no default value" (let* ((t1 (service-type (name 't1) (extensions '()))) (t2 (service-type (name 't2) (extensions (list (service-extension t1 list))))) (s (service t2 42))) (guard (c ((missing-target-service-error? c) (and (eq? (missing-target-service-error-target-type c) t1) (eq? (missing-target-service-error-service c) s)))) (instantiate-missing-services (list s)) #f))) (test-assert "shepherd-service-lookup-procedure" (let* ((s1 (shepherd-service (provision '(s1 s1b)) (start #f))) (s2 (shepherd-service (provision '(s2 s2b)) (start #f))) (s3 (shepherd-service (provision '(s3 s3b s3c)) (start #f))) (lookup (shepherd-service-lookup-procedure (list s1 s2 s3)))) (and (eq? (lookup 's1) (lookup 's1b) s1) (eq? (lookup 's2) (lookup 's2b) s2) (eq? (lookup 's3) (lookup 's3b) s3)))) (test-assert "shepherd-service-back-edges" (let* ((s1 (shepherd-service (provision '(s1)) (start #f))) (s2 (shepherd-service (provision '(s2)) (requirement '(s1)) (start #f))) (s3 (shepherd-service (provision '(s3)) (requirement '(s1 s2)) (start #f))) (e (shepherd-service-back-edges (list s1 s2 s3)))) (and (lset= eq? (e s1) (list s2 s3)) (lset= eq? (e s2) (list s3)) (null? (e s3))))) (test-equal "shepherd-service-upgrade: nothing to do" '(() ()) (call-with-values (lambda () (shepherd-service-upgrade '() '())) list)) (test-equal "shepherd-service-upgrade: one unchanged, one upgraded, one new" '(() ;unload ((foo))) ;restart (call-with-values (lambda () ;; Here 'foo' is replaced and must be explicitly restarted later ;; because it is still running, whereas 'bar' is upgraded right away ;; because it is not currently running. 'baz' is loaded because it's ;; a new service. (shepherd-service-upgrade (list (live-service '(foo) '() #t) (live-service '(bar) '() #f) (live-service '(root) '() #t)) ;essential! (list (shepherd-service (provision '(foo)) (start #t)) (shepherd-service (provision '(bar)) (start #t)) (shepherd-service (provision '(baz)) (start #t))))) (lambda (unload restart) (list (map live-service-provision unload) (map shepherd-service-provision restart))))) (test-equal "shepherd-service-upgrade: service depended on is not unloaded" '(((baz)) ;unload ((foo))) ;restart (call-with-values (lambda () ;; Service 'bar' is not among the target services; yet, it must not be ;; unloaded because 'foo' depends on it. 'foo' gets replaced but it ;; must be restarted manually. (shepherd-service-upgrade (list (live-service '(foo) '(bar) #t) (live-service '(bar) '() #t) ;still used! (live-service '(baz) '() #t)) (list (shepherd-service (provision '(foo)) (start #t))))) (lambda (unload restart) (list (map live-service-provision unload) (map shepherd-service-provision restart))))) (test-equal "shepherd-service-upgrade: obsolete services that depend on each other" '(((foo) (bar) (baz)) ;unload ()) ;restart (call-with-values (lambda () ;; 'foo', 'bar', and 'baz' depend on each other, but all of them are ;; obsolete, and thus should be unloaded. (shepherd-service-upgrade (list (live-service '(foo) '(bar) #t) ;obsolete (live-service '(bar) '(baz) #t) ;obsolete (live-service '(baz) '() #t)) ;obsolete (list (shepherd-service (provision '(qux)) (start #t))))) (lambda (unload restart) (list (map live-service-provision unload) (map shepherd-service-provision restart))))) (test-eq "lookup-service-types" system-service-type (and (null? (lookup-service-types 'does-not-exist-at-all)) (match (lookup-service-types 'system) ((one) one) (x x)))) (test-end)