diff options
| author | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2025-11-17 15:46:53 +0900 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2026-03-11 18:27:46 +0100 |
| commit | 3433fb987bbc826a585a0d4d0a80e1f5369769a3 (patch) | |
| tree | 404bf5c6a53dd084bc4ab26506455077e9a8eef3 /gnu/tests/version-control.scm | |
| parent | 6eb6971f4d721fc8d648323f0dbd52d0697b2a7b (diff) | |
services: Add fossil-service-type.
* gnu/services/version-control.scm
(fossil-service-type, fossil-configuration): New public variables.
* gnu/tests/version-control.scm (%test-fossil): Add system tests.
* doc/guix.texi (Version Control Services): Add Fossil documentation.
Change-Id: I84e09fe8c11e161ed7c4bdba42b0ae38ef4c2096
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/tests/version-control.scm')
| -rw-r--r-- | gnu/tests/version-control.scm | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/gnu/tests/version-control.scm b/gnu/tests/version-control.scm index 8426555a18f..9df3aa9dbd4 100644 --- a/gnu/tests/version-control.scm +++ b/gnu/tests/version-control.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2017-2018, 2020-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Christopher Baines <mail@cbaines.net> +;;; Copyright © 2026 Nguyễn Gia Phong <cnx@loang.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,7 +40,8 @@ #:export (%test-cgit %test-git-http %test-gitolite - %test-gitile)) + %test-gitile + %test-fossil)) (define README-contents "Hello! This is what goes inside the 'README' file.") @@ -519,3 +521,74 @@ HTTP-PORT." (name "gitile") (description "Connect to a running Gitile server.") (value (run-gitile-test)))) + + +;;; +;;; Fossil server. +;;; + +(define %test-fossil + (system-test + (name "fossil") + (description "Connect to a running Fossil server.") + (value + (gexp->derivation + (string-append name "-test") + (let* ((port 8080) + (base-url (simple-format #f "http://localhost:~a" port)) + (index-url (string-append base-url "/index")) + (os (marionette-operating-system + (simple-operating-system + (service dhcpcd-service-type) + (service fossil-service-type + (fossil-configuration + (repository "/tmp/test.fossil") + (base-url base-url) + (create? #t) + (port port)))))) + (vm (virtual-machine (operating-system os) + (port-forwardings (list (cons port port)))))) + (with-imported-modules '((gnu build marionette) + (guix build utils)) + #~(begin + (use-modules (gnu build marionette) + (guix build utils) + (srfi srfi-64) + (srfi srfi-71) + (web client) + (web response)) + (define marionette (make-marionette (list #$vm))) + (test-runner-current (system-test-runner #$output)) + (test-begin #$name) + + (test-assert "server running" + (wait-for-tcp-port #$port marionette)) + + (test-assert "server log file" + (wait-for-file "/var/log/fossil.log" marionette)) + + (test-assert "cloning" + (begin + (setenv "HOME" #$output) ; fossil writes to $HOME + (invoke/quiet #$(file-append fossil "/bin/fossil") "clone" + "--admin-user" "alice" + "--httptrace" + "--verbose" + #$base-url + (string-append #$output "/test.fossil")))) + + (test-assert "index redirect" + (let ((response text + (http-get #$base-url #:decode-body? #t))) + (and (= 302 (response-code response)) + (string-contains text #$index-url)))) + + (test-equal "index page" + 200 (response-code (http-get #$index-url))) + + (test-equal "tarball download" + 200 (response-code + (http-get (string-append #$base-url + "/tarball/test.tar.gz")))) + + (test-end)))))))) |
