summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorReepca Russelstein <reepca@russelstein.xyz>2025-09-16 22:08:19 -0500
committerLudovic Courtès <ludo@gnu.org>2025-10-12 22:22:01 +0200
commit55a10ce4e618d334ccc5df71bf94483d7c9966ed (patch)
treece57a8ee7ad45b670dc250b0857c8c85da845213 /tests
parentb39f914b3ef779ab50b2af5e4eee0d0f93e9b7f4 (diff)
tests: don't use 'file://...' URIs for testing git downloads.
While 'url-fetch*' in (guix download) special-cases these URIs, 'git-fetch' does not. Consequently, the recent changes to (guix scripts perform-download) that disallow these URIs cause tests that use builtin:git-download to fail. * guix/tests/git.scm (serve-git-repository, call-with-served-git-repository): new procedures. (with-served-git-repository, with-served-temporary-git-repository): new syntax. * .dir-locals.el (scheme-mode): add indentation information for 'with-served-git-repository'. * tests/builders.scm ("git-fetch, file URI"): use git:// URI with 'with-served-temporary-git-repository'. * tests/derivations.scm ("'git-download' build-in builder, invalid hash", "'git-download' built-in builder, invalid commit", "'git-download' built-in builder, not found"): same. ("'git-download' built-in builder"): same, and use a nonce in the repo contents so that success isn't cached. Change-Id: Id3e1233bb74d5987faf89c4341e1d37f09c77c80 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/builders.scm8
-rw-r--r--tests/derivations.scm55
2 files changed, 39 insertions, 24 deletions
diff --git a/tests/builders.scm b/tests/builders.scm
index 0ed295a93f..44add1d13e 100644
--- a/tests/builders.scm
+++ b/tests/builders.scm
@@ -88,10 +88,10 @@
(and (file-exists? out)
(valid-path? %store out))))
-(test-equal "git-fetch, file URI"
+(test-equal "git-fetch, local URI"
'("." ".." "a.txt" "b.scm")
(let ((nonce (random-text)))
- (with-temporary-git-repository directory
+ (with-served-temporary-git-repository directory port
`((add "a.txt" ,nonce)
(add "b.scm" "#t")
(commit "Commit.")
@@ -103,7 +103,9 @@
#:recursive? #t))
(drv (git-fetch
(git-reference
- (url (string-append "file://" directory))
+ (url (string-append "git://localhost:"
+ (number->string port)
+ "/"))
(commit "v1.0.0"))
'sha256 hash
"git-fetch-test")))
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 077aee0909..d4cca0f605 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -306,12 +306,14 @@
get-string-all)
text))))))
+(define %nonce (random-text))
+
(test-equal "'git-download' built-in builder"
- `(("/a.txt" . "AAA")
+ `(("/a.txt" . ,%nonce)
("/b.scm" . "#t"))
(let ((nonce (random-text)))
- (with-temporary-git-repository directory
- `((add "a.txt" "AAA")
+ (with-served-temporary-git-repository directory port
+ `((add "a.txt" ,%nonce)
(add "b.scm" "#t")
(commit ,nonce))
(let* ((commit (with-repository directory repository
@@ -322,7 +324,9 @@
#:env-vars
`(("url"
. ,(object->string
- (string-append "file://" directory)))
+ (string-append "git://localhost:"
+ (number->string port)
+ "/")))
("commit" . ,commit))
#:hash-algo 'sha256
#:hash (file-hash* directory
@@ -335,7 +339,7 @@
(directory-contents (derivation->output-path drv) get-string-all)))))
(test-assert "'git-download' built-in builder, invalid hash"
- (with-temporary-git-repository directory
+ (with-served-temporary-git-repository directory port
`((add "a.txt" "AAA")
(add "b.scm" "#t")
(commit "Commit!"))
@@ -347,7 +351,9 @@
#:env-vars
`(("url"
. ,(object->string
- (string-append "file://" directory)))
+ (string-append "git://localhost:"
+ (number->string port)
+ "/")))
("commit" . ,commit))
#:hash-algo 'sha256
#:hash (gcrypt:sha256 #vu8())
@@ -358,7 +364,7 @@
#f))))
(test-assert "'git-download' built-in builder, invalid commit"
- (with-temporary-git-repository directory
+ (with-served-temporary-git-repository directory port
`((add "a.txt" "AAA")
(add "b.scm" "#t")
(commit "Commit!"))
@@ -367,7 +373,9 @@
#:env-vars
`(("url"
. ,(object->string
- (string-append "file://" directory)))
+ (string-append "git://localhost:"
+ (number->string port)
+ "/")))
("commit"
. "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
#:hash-algo 'sha256
@@ -379,19 +387,24 @@
#f))))
(test-assert "'git-download' built-in builder, not found"
- (let* ((drv (derivation %store "git-download"
- "builtin:git-download" '()
- #:env-vars
- `(("url" . "file:///does-not-exist.git")
- ("commit"
- . "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
- #:hash-algo 'sha256
- #:hash (gcrypt:sha256 #vu8())
- #:recursive? #t)))
- (guard (c ((store-protocol-error? c)
- (string-contains (store-protocol-error-message c) "failed")))
- (build-derivations %store (list drv))
- #f)))
+ (with-served-temporary-git-repository directory port
+ '()
+ (let* ((drv (derivation %store "git-download"
+ "builtin:git-download" '()
+ #:env-vars
+ `(("url" . ,(object->string
+ (string-append "git://localhost:"
+ (number->string port)
+ "/nonexistent")))
+ ("commit"
+ . "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
+ #:hash-algo 'sha256
+ #:hash (gcrypt:sha256 #vu8())
+ #:recursive? #t)))
+ (guard (c ((store-protocol-error? c)
+ (string-contains (store-protocol-error-message c) "failed")))
+ (build-derivations %store (list drv))
+ #f))))
(test-equal "derivation-name"
"foo-0.0"