From b73427bf6ba06d9df71785b1093dc264fb3ab407 Mon Sep 17 00:00:00 2001 From: Rodion Goritskov Date: Sun, 4 Jan 2026 20:44:17 +0100 Subject: [PATCH] tests: mail: Add Radicale test. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/tests/mail.scm (%radicale-os): New variable. (run-radicale-test): New function with basic tests. (%test-radicale): New variable. Change-Id: I4a4e093ca7ac2a20a575bcf38b6ff763edf67652 Signed-off-by: Ludovic Courtès Merges: #5361 --- gnu/tests/mail.scm | 68 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/gnu/tests/mail.scm b/gnu/tests/mail.scm index ff9c3a690c1..87c1a2667ee 100644 --- a/gnu/tests/mail.scm +++ b/gnu/tests/mail.scm @@ -42,7 +42,8 @@ %test-exim %test-dovecot %test-getmail - %test-rspamd)) + %test-rspamd + %test-radicale)) (define %qemu-static-networking-no-nameserver ;; Networking configuration for QEMU without nameserver. @@ -721,3 +722,68 @@ Subject: Hello Nice to meet you!") (name "rspamd") (description "Basic rspamd service test.") (value (run-rspamd-test)))) + +(define %radicale-os + (simple-operating-system + (service dhcpcd-service-type) + (service radicale-service-type))) + +(define (run-radicale-test) + "Return a test of an OS running Radicale service." + + (define forwarded-port 5232) + + (define vm + (virtual-machine + (operating-system + (marionette-operating-system + %radicale-os + #:imported-modules '((gnu services herd)))) + (port-forwardings `((5232 . ,forwarded-port))))) + + (define test + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules (srfi srfi-64) + (gnu build marionette)) + + (define marionette + (make-marionette '(#$vm))) + + (test-runner-current (system-test-runner #$output)) + (test-begin "Radicale") + + (test-assert "Radicale service is running" + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (wait-for-service 'radicale)) + marionette)) + + (test-assert "Radicale TCP port ready, IPv4" + (wait-for-tcp-port #$forwarded-port marionette)) + + (test-equal "Radicale internal web interface works" + 200 + (marionette-eval + '(begin + (use-modules (web client) + (web response)) + (response-code (http-get "http://localhost:5232/.web/index.html"))) + marionette)) + + (test-assert "Radicale configuration action" + (marionette-eval '(with-shepherd-action 'radicale ('configuration) + results + (file-exists? (car results))) + marionette)) + + (test-end)))) + + (gexp->derivation "radicale-test" test)) + +(define %test-radicale + (system-test + (name "radicale") + (description "Basic radicale service test.") + (value (run-radicale-test))))