AtlatestRepositoryminder
1
(import (sigil test)2
(sigil string)3
(sigil dict)4
(sigil yaml)5
(sigil fs)6
(sigil path)7
(sigil io)8
(minder config))10
;; ============================================================11
;; Config struct defaults12
;; ============================================================14
(test-group "config defaults"15
(test "minder-config has sensible defaults"16
(let ((cfg (minder-config)))17
(assert-equal '() (minder-config-schedules cfg))))19
(test "schedule-config holds name, cron, prompt"20
(let ((s (schedule-config name: "test" cron: "*/5 * * * *"21
prompt: "Test task")))22
(assert-equal "test" (schedule-config-name s))23
(assert-equal "*/5 * * * *" (schedule-config-cron s))24
(assert-equal "Test task" (schedule-config-prompt s)))))26
;; ============================================================27
;; load-minder-config28
;; ============================================================30
(test-group "load-minder-config"31
(test "loads from minder.yaml"32
(let* ((tmp (make-temp-directory))33
(yaml-content (string-append34
"schedules:\n"35
" check-services:\n"36
" cron: \"*/30 * * * *\"\n"37
" prompt: Check service health\n"38
" daily-review:\n"39
" cron: \"0 9 * * *\"\n"40
" prompt: Daily task review\n"))41
(config-file (path-join tmp "minder.yaml"))42
(prev-dir (current-directory)))43
(write-file-string config-file yaml-content)44
(set-current-directory! tmp)45
(let ((cfg (load-minder-config)))46
(set-current-directory! prev-dir)47
(assert-equal 2 (length (minder-config-schedules cfg)))48
(let ((sched (find (lambda (s) (string=? "check-services"49
(schedule-config-name s)))50
(minder-config-schedules cfg))))51
(assert-true (schedule-config? sched))52
(assert-equal "*/30 * * * *" (schedule-config-cron sched))53
(assert-equal "Check service health" (schedule-config-prompt sched))))54
(delete-file config-file)55
(delete-directory tmp)))57
(test "works without minder.yaml"58
(let* ((tmp (make-temp-directory))59
(prev-dir (current-directory)))60
(set-current-directory! tmp)61
(let ((cfg (load-minder-config)))62
(set-current-directory! prev-dir)63
(assert-equal '() (minder-config-schedules cfg)))64
(delete-directory tmp))))66
(run-tests)