diff options
author | Rodion Goritskov <rodion.goritskov@gmail.com> | 2024-10-14 23:48:17 +0400 |
---|---|---|
committer | Rodion Goritskov <rodion.goritskov@gmail.com> | 2024-10-14 23:48:17 +0400 |
commit | 64203dd4ea7d70b2d53e69dbc63fc67bff4c7820 (patch) | |
tree | ae8f5a6e4b8be91e493d4c1a4495b4c7cf44ebbb /rodion/tests | |
parent | 40d5927d12fa99d53aada838d56677f8b7b98fcf (diff) |
gnu: miniflux: Remove unnecessary Shepherd dependency.
* rodion/services/miniflux.scm miniflux: Remove unnecessary dependency
from service.
* rodion/tests/services.scm: Make Miniflux tests more stable. Add page
open test case.
Diffstat (limited to 'rodion/tests')
-rw-r--r-- | rodion/tests/services.scm | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/rodion/tests/services.scm b/rodion/tests/services.scm index 758be89..e5f7571 100644 --- a/rodion/tests/services.scm +++ b/rodion/tests/services.scm @@ -12,13 +12,35 @@ #:use-module (rodion services miniflux) #:use-module (guix gexp)) +(define retry-on-error + #~(lambda* (f #:key times delay) + (let loop ((attempt 1)) + (match (catch + #t + (lambda () + (cons #t + (f))) + (lambda args + (cons #f + args))) + ((#t . return-value) + return-value) + ((#f . error-args) + (if (>= attempt times) + error-args + (begin + (sleep delay) + (loop (+ 1 attempt))))))))) + (define %miniflux-os (simple-operating-system (service dhcp-client-service-type) (service postgresql-service-type (postgresql-configuration (postgresql postgresql-15))) - (service miniflux-service-type))) + (service miniflux-service-type + (miniflux-configuration + (listen-addr "0.0.0.0:8080"))))) (define* (run-miniflux-test name test-os) (define os @@ -32,13 +54,19 @@ (define vm (virtual-machine (operating-system os) + (memory-size 512) (port-forwardings `((8080 . ,forwarded-port))))) (define test (with-imported-modules '((gnu build marionette)) #~(begin (use-modules (srfi srfi-64) - (gnu build marionette)) + (srfi srfi-11) + (gnu build marionette) + (web client) + (web uri) + (web response) + (ice-9 match)) (define marionette (make-marionette (list #$vm))) @@ -60,6 +88,19 @@ (test-assert "Miniflux TCP port ready, IPv4" (wait-for-tcp-port #$forwarded-port marionette)) + + (test-assert "Miniflux login page is opened" + (begin + (wait-for-tcp-port #$forwarded-port marionette) + (#$retry-on-error + (lambda () + (let-values (((response text) + (http-get + #$(format #f "http://localhost:~A/" forwarded-port) + #:decode-body? #t))) + (string-contains text "<title>Sign In - Miniflux</title>"))) + #:times 10 + #:delay 5))) (test-end)))) (gexp->derivation "miniflux-test" test)) |