job-specifier: Box 'configuration-user' global variable

* src/mcron/job-specifier.scm (configuration-user): Box it using
SRFI-111 to be explicit about the mutability of this object.
(job): Adapt.
(set-configuration-user): Adapt and use 'get-user'.
* tests/job-specifier.scm ("set-configuration-user: passwd entry")
("set-configuration-user: invalid uid", "set-configuration-user: uid")
("set-configuration-user: invalid spec")
("set-configuration-user: name"): New tests.
This commit is contained in:
Mathieu Lirzin 2018-03-26 22:42:26 +02:00
commit 15fa52f7ec
No known key found for this signature in database
GPG key ID: 0ADEE10094604D37
2 changed files with 50 additions and 6 deletions

View file

@ -18,6 +18,7 @@
(use-modules (ice-9 match)
(srfi srfi-64)
(srfi srfi-111)
(mcron job-specifier))
(test-begin "job-specifier")
@ -86,4 +87,49 @@
(list (next-second '(52 55))
(next-second-from 14)))
;;;
;;; Check 'configuration-user' manipulation
;;;
(define configuration-user (@@ (mcron job-specifier) configuration-user))
;;; Call 'set-configuration-user' with a valid uid.
(let ((uid (getuid)))
(test-equal "set-configuration-user: uid"
uid
(begin
(set-configuration-user uid)
(passwd:uid (unbox configuration-user)))))
(define entry
;; Random user entry.
(getpw))
;;; Call 'set-configuration-user' with a valid user name.
(let ((name (passwd:name entry)))
(test-equal "set-configuration-user: name"
name
(begin
(set-configuration-user name)
(passwd:name (unbox configuration-user)))))
(define root-entry (getpw 0))
;;; Call 'set-configuration-user' with a passwd entry.
(test-equal "set-configuration-user: passwd entry"
root-entry
(begin
(set-configuration-user root-entry)
(unbox configuration-user)))
;;; Call 'set-configuration-user' with an invalid uid.
(test-error "set-configuration-user: invalid uid"
#t
(set-configuration-user -20000))
;;; Call 'set-configuration-user' with an invalid spec.
(test-error "set-configuration-user: invalid spec"
#t
(set-configuration-user 'wrong))
(test-end)