summaryrefslogtreecommitdiff
path: root/tests/gnu-maintenance.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gnu-maintenance.scm')
-rw-r--r--tests/gnu-maintenance.scm65
1 files changed, 54 insertions, 11 deletions
diff --git a/tests/gnu-maintenance.scm b/tests/gnu-maintenance.scm
index 6fde1eb8b1..82a02bec6f 100644
--- a/tests/gnu-maintenance.scm
+++ b/tests/gnu-maintenance.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2021 Ludovic Courtès <[email protected]>
;;; Copyright © 2022 Maxime Devos <[email protected]>
+;;; Copyright © 2023-2024 Maxim Cournoyer <[email protected]>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -26,6 +27,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-64)
#:use-module ((web client) #:select (current-http-proxy))
+ #:use-module ((web uri) #:select (uri? uri->string))
#:use-module (ice-9 match))
(test-begin "gnu-maintenance")
@@ -157,11 +159,17 @@ submodules/qtbase-everywhere-src-6.5.2.tar.xz"
(rewrite-url "https://download.qt.io/official_releases/qt/6.3/6.3.2/\
submodules/qtbase-everywhere-src-6.3.2.tar.xz" "6.3.2" #:to-version "6.5.2"))
-(test-equal "rewrite-url, without to-version"
- "http://dist.libuv.example.org/dist/v1.46.0/libuv-v1.46.0.tar.gz"
- (with-http-server
- ;; First reply, crawling http://dist.libuv.example.org/dist/.
- `((200 "\
+(define (mock-http-fetch/cached testcase)
+ (lambda (url . rest)
+ (let* ((url (if (uri? url)
+ (uri->string url)
+ url))
+ (body (assoc-ref testcase url)))
+ (if body
+ (open-input-string body)
+ (error "mocked http-fetch Unexpected URL: " url)))))
+
+(define libuv-dist-html "\
<!DOCTYPE html>
<html>
<head><title>Index of dist</title></head>
@@ -174,8 +182,8 @@ submodules/qtbase-everywhere-src-6.3.2.tar.xz" "6.3.2" #:to-version "6.5.2"))
<a href=\"v1.46.0/\" title=\"v1.46.0/\">v1.46.0/</a>
</body>
</html>")
- ;; Second reply, crawling http://dist.libuv.example.org/dist/v1.46.0/.
- (200 "\
+
+(define libuv-dist-1.46.0-html "\
<!DOCTYPE html>
<html>
<head><title>Index of dist/v1.46.0</title></head>
@@ -190,9 +198,44 @@ submodules/qtbase-everywhere-src-6.3.2.tar.xz" "6.3.2" #:to-version "6.5.2"))
<a href=\"libuv-v1.46.0.tar.gz.sign\" title=\"libuv-v1.46.0.tar.gz.sign\">
libuv-v1.46.0.tar.gz.sign</a>
</body>
-</html>"))
- (parameterize ((current-http-proxy (%local-url)))
- (rewrite-url "http://dist.libuv.example.org/dist/v1.45.0/libuv-v1.45.0.tar.gz"
- "1.45.0"))))
+</html>")
+
+(define libuv-dist-1.44.2-html "\
+<!DOCTYPE html>
+<html>
+<head><title>Index of dist/v1.44.2</title></head>
+<body>
+<a href=\"../\">../</a>
+<a href=\"libuv-v1.44.2-dist.tar.gz\" title=\"libuv-v1.44.2-dist.tar.gz\">
+ libuv-v1.44.2-dist.tar.gz</a>
+<a href=\"libuv-v1.44.2-dist.tar.gz.sign\" title=\"libuv-v1.44.2-dist.tar.gz.sign\">
+ libuv-v1.44.2-dist.tar.gz.sign</a>
+<a href=\"libuv-v1.44.2.tar.gz\" title=\"libuv-v1.44.2.tar.gz\">
+ libuv-v1.44.2.tar.gz</a>
+<a href=\"libuv-v1.44.2.tar.gz.sign\" title=\"libuv-v1.44.2.tar.gz.sign\">
+ libuv-v1.44.2.tar.gz.sign</a>
+</body>
+</html>")
+
+(define libuv-html-data
+ `(("http://dist.libuv.example.org/dist" . ,libuv-dist-html)
+ ("http://dist.libuv.example.org/dist/v1.44.2" . ,libuv-dist-1.44.2-html)
+ ("http://dist.libuv.example.org/dist/v1.46.0" . ,libuv-dist-1.46.0-html)))
+
+(test-equal "rewrite-url, without to-version"
+ "http://dist.libuv.example.org/dist/v1.46.0/libuv-v1.46.0.tar.gz"
+ (mock ((guix http-client) http-fetch/cached
+ (mock-http-fetch/cached libuv-html-data))
+ (rewrite-url
+ "http://dist.libuv.example.org/dist/v1.45.0/libuv-v1.45.0.tar.gz"
+ "1.45.0")))
+
+(test-equal "rewrite-url, partial to-version"
+ "http://dist.libuv.example.org/dist/v1.44.2/libuv-v1.44.2.tar.gz"
+ (mock ((guix http-client) http-fetch/cached
+ (mock-http-fetch/cached libuv-html-data))
+ (rewrite-url
+ "http://dist.libuv.example.org/dist/v1.45.0/libuv-v1.45.0.tar.gz"
+ "1.45.0" #:to-version "1.44" #:partial-version? #t)))
(test-end)