diff options
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 @@ | |||
| 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)))))))) | ||
