summary refs log tree commit diff
path: root/gnu/tests/web.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/tests/web.scm')
-rw-r--r--gnu/tests/web.scm73
1 files changed, 37 insertions, 36 deletions
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 1c984dd6f4..7513eab2e4 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -521,42 +521,43 @@ HTTP-PORT."
 ;;; Patchwork
 ;;;
 
-(define patchwork-initial-database-setup-service
-  (match-lambda
-    (($ <patchwork-database-configuration>
-        engine name user password host port)
-
-     (define start-gexp
-       #~(lambda ()
-           (let ((pid (primitive-fork))
-                 (postgres (getpwnam "postgres")))
-             (if (eq? pid 0)
-                 (dynamic-wind
-                   (const #t)
-                   (lambda ()
-                     (setgid (passwd:gid postgres))
-                     (setuid (passwd:uid postgres))
-                     (primitive-exit
-                      (if (and
-                           (zero?
-                            (system* #$(file-append postgresql "/bin/createuser")
-                                     #$user))
-                           (zero?
-                            (system* #$(file-append postgresql "/bin/createdb")
-                                     "-O" #$user #$name)))
-                          0
-                          1)))
-                   (lambda ()
-                     (primitive-exit 1)))
-                 (zero? (cdr (waitpid pid)))))))
-
-     (shepherd-service
-      (requirement '(postgres))
-      (provision '(patchwork-postgresql-user-and-database))
-      (start start-gexp)
-      (stop #~(const #f))
-      (respawn? #f)
-      (documentation "Setup patchwork database.")))))
+(define (patchwork-initial-database-setup-service configuration)
+  (define start-gexp
+    #~(lambda ()
+        (let ((pid (primitive-fork))
+              (postgres (getpwnam "postgres")))
+          (if (eq? pid 0)
+              (dynamic-wind
+                (const #t)
+                (lambda ()
+                  (setgid (passwd:gid postgres))
+                  (setuid (passwd:uid postgres))
+                  (primitive-exit
+                   (if (and
+                        (zero?
+                         (system* #$(file-append postgresql "/bin/createuser")
+                                  #$(patchwork-database-configuration-user
+                                      configuration)))
+                        (zero?
+                         (system* #$(file-append postgresql "/bin/createdb")
+                                  "-O"
+                                  #$(patchwork-database-configuration-user
+                                      configuration)
+                                  #$(patchwork-database-configuration-name
+                                      configuration))))
+                       0
+                       1)))
+                (lambda ()
+                  (primitive-exit 1)))
+              (zero? (cdr (waitpid pid)))))))
+
+  (shepherd-service
+   (requirement '(postgres))
+   (provision '(patchwork-postgresql-user-and-database))
+   (start start-gexp)
+   (stop #~(const #f))
+   (respawn? #f)
+   (documentation "Setup patchwork database.")))
 
 (define (patchwork-os patchwork)
   (simple-operating-system