guix_mirror_bot pushed a commit to branch master
in repository guix.

commit b73427bf6ba06d9df71785b1093dc264fb3ab407
Author: Rodion Goritskov <[email protected]>
AuthorDate: Sun Jan 4 20:44:17 2026 +0100

    tests: mail: Add Radicale test.
    
    * 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 <[email protected]>
    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 ff9c3a690c..87c1a2667e 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))))

Reply via email to