diff options
author | Rodion Goritskov <rodion.goritskov@gmail.com> | 2024-08-15 01:25:07 +0400 |
---|---|---|
committer | Rodion Goritskov <rodion.goritskov@gmail.com> | 2024-08-15 01:25:07 +0400 |
commit | 74e2d2009b6e3e8aa9d1dd8dbe5eb7553a84f46e (patch) | |
tree | f6e9a59ffb3b8c37da4baf63057cba4dd5d5295a /rodion/tests | |
parent | 1037183f78be9751e31d4bc05369e37f0d2e8252 (diff) |
miniflux: Add system tests
Diffstat (limited to 'rodion/tests')
-rw-r--r-- | rodion/tests/services.scm | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/rodion/tests/services.scm b/rodion/tests/services.scm new file mode 100644 index 0000000..758be89 --- /dev/null +++ b/rodion/tests/services.scm @@ -0,0 +1,80 @@ +(define-module (rodion tests services) + #:use-module (gnu tests) + #:use-module (gnu system) + #:use-module (gnu system vm) + #:use-module (gnu services) + #:use-module (gnu services networking) + #:use-module (gnu services databases) + #:use-module (gnu packages databases) + #:use-module (guix monads) + #:use-module (guix store) + #:use-module (guix profiles) + #:use-module (rodion services miniflux) + #:use-module (guix gexp)) + +(define %miniflux-os + (simple-operating-system + (service dhcp-client-service-type) + (service postgresql-service-type + (postgresql-configuration + (postgresql postgresql-15))) + (service miniflux-service-type))) + +(define* (run-miniflux-test name test-os) + (define os + (marionette-operating-system + test-os + #:imported-modules '((gnu services herd) + (guix combinators)))) + + (define forwarded-port 8080) + + (define vm + (virtual-machine + (operating-system os) + (port-forwardings `((8080 . ,forwarded-port))))) + + (define test + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules (srfi srfi-64) + (gnu build marionette)) + + (define marionette + (make-marionette (list #$vm))) + + (test-runner-current (system-test-runner #$output)) + (test-begin #$name) + + (test-assert #$(string-append name " service running") + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (match (start-service '#$(string->symbol name)) + (#f #f) + (('service response-parts ...) + (match (assq-ref response-parts 'running) + ((#t) #t) + ((pid) (number? pid)))))) + marionette)) + + (test-assert "Miniflux TCP port ready, IPv4" + (wait-for-tcp-port #$forwarded-port marionette)) + + (test-end)))) + (gexp->derivation "miniflux-test" test)) + +(define %test-miniflux + (system-test + (name "miniflux") + (description "Connect to a running Miniflux service.") + (value (run-miniflux-test name %miniflux-os)))) + +(define (system-test->manifest-entry test) + "Return a manifest entry for TEST, a system test." + (manifest-entry + (name (string-append "test." (system-test-name test))) + (version "0") + (item test))) + +(manifest (map system-test->manifest-entry (list %test-miniflux))) |