summaryrefslogtreecommitdiff
path: root/gnu/tests
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/tests')
-rw-r--r--gnu/tests/version-control.scm75
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 @@
3;;; Copyright © 2017-2018, 2020-2022 Ludovic Courtès <ludo@gnu.org> 3;;; Copyright © 2017-2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
4;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> 4;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
5;;; Copyright © 2018 Christopher Baines <mail@cbaines.net> 5;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
6;;; Copyright © 2026 Nguyễn Gia Phong <cnx@loang.net>
6;;; 7;;;
7;;; This file is part of GNU Guix. 8;;; This file is part of GNU Guix.
8;;; 9;;;
@@ -39,7 +40,8 @@
39 #:export (%test-cgit 40 #:export (%test-cgit
40 %test-git-http 41 %test-git-http
41 %test-gitolite 42 %test-gitolite
42 %test-gitile)) 43 %test-gitile
44 %test-fossil))
43 45
44(define README-contents 46(define README-contents
45 "Hello! This is what goes inside the 'README' file.") 47 "Hello! This is what goes inside the 'README' file.")
@@ -519,3 +521,74 @@ HTTP-PORT."
519 (name "gitile") 521 (name "gitile")
520 (description "Connect to a running Gitile server.") 522 (description "Connect to a running Gitile server.")
521 (value (run-gitile-test)))) 523 (value (run-gitile-test))))
524
525
526;;;
527;;; Fossil server.
528;;;
529
530(define %test-fossil
531 (system-test
532 (name "fossil")
533 (description "Connect to a running Fossil server.")
534 (value
535 (gexp->derivation
536 (string-append name "-test")
537 (let* ((port 8080)
538 (base-url (simple-format #f "http://localhost:~a" port))
539 (index-url (string-append base-url "/index"))
540 (os (marionette-operating-system
541 (simple-operating-system
542 (service dhcpcd-service-type)
543 (service fossil-service-type
544 (fossil-configuration
545 (repository "/tmp/test.fossil")
546 (base-url base-url)
547 (create? #t)
548 (port port))))))
549 (vm (virtual-machine (operating-system os)
550 (port-forwardings (list (cons port port))))))
551 (with-imported-modules '((gnu build marionette)
552 (guix build utils))
553 #~(begin
554 (use-modules (gnu build marionette)
555 (guix build utils)
556 (srfi srfi-64)
557 (srfi srfi-71)
558 (web client)
559 (web response))
560 (define marionette (make-marionette (list #$vm)))
561 (test-runner-current (system-test-runner #$output))
562 (test-begin #$name)
563
564 (test-assert "server running"
565 (wait-for-tcp-port #$port marionette))
566
567 (test-assert "server log file"
568 (wait-for-file "/var/log/fossil.log" marionette))
569
570 (test-assert "cloning"
571 (begin
572 (setenv "HOME" #$output) ; fossil writes to $HOME
573 (invoke/quiet #$(file-append fossil "/bin/fossil") "clone"
574 "--admin-user" "alice"
575 "--httptrace"
576 "--verbose"
577 #$base-url
578 (string-append #$output "/test.fossil"))))
579
580 (test-assert "index redirect"
581 (let ((response text
582 (http-get #$base-url #:decode-body? #t)))
583 (and (= 302 (response-code response))
584 (string-contains text #$index-url))))
585
586 (test-equal "index page"
587 200 (response-code (http-get #$index-url)))
588
589 (test-equal "tarball download"
590 200 (response-code
591 (http-get (string-append #$base-url
592 "/tarball/test.tar.gz"))))
593
594 (test-end))))))))