diff options
author | Maxime Devos <maximedevos@telenet.be> | 2021-02-20 22:04:59 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-03-06 11:41:48 +0100 |
commit | c05ceaf2b650d090cf39a048193505cb4e6bd257 (patch) | |
tree | e1468c7cd89392e1239a75ef057bbc3373f09646 /tests/derivations.scm | |
parent | 3182539875a67f5989c73c3c654fe3138bbc275c (diff) |
tests: do not hard code HTTP ports
Previously, test cases could fail if some process was listening
at a hard-coded port. This patch eliminates most of these potential
failures, by automatically assigning an unbound port. This should
allow for building multiple guix trees in parallel outside a build
container, though this is currently untested.
The test "home-page: Connection refused" in tests/lint.scm still
hardcodes port 9999, however.
* guix/tests/http.scm
(http-server-can-listen?): remove now unused procedure.
(%http-server-port): default to port 0, meaning the OS
will automatically choose a port.
(open-http-server-socket): remove the false statement claiming
this procedure is exported and also return the allocated port
number.
(%local-url): raise an error if the port is obviously unbound.
(call-with-http-server): set %http-server-port to the allocated
port while the thunk is called.
* tests/derivations.scm: adjust test cases to use automatically
assign a port. As there is no risk of a port conflict now,
do not make any tests conditional upon 'http-server-can-listen?'
anymore.
* tests/elpa.scm: likewise.
* tests/lint.scm: likewise, and add a TODO comment about a port
that is still hard-coded.
* tests/texlive.scm: likewise.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'tests/derivations.scm')
-rw-r--r-- | tests/derivations.scm | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/tests/derivations.scm b/tests/derivations.scm index 9f1104a887..cd165d1be6 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -77,9 +77,6 @@ (lambda (e1 e2) (string<? (car e1) (car e2))))) -;; Avoid collisions with other tests. -(%http-server-port 10500) - (test-begin "derivations") @@ -205,8 +202,6 @@ (build-derivations %store (list drv)) #f))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder" (let ((text (random-text))) (with-http-server `((200 ,text)) @@ -221,8 +216,6 @@ get-string-all) text)))))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder, invalid hash" (with-http-server `((200 "hello, world!")) (let* ((drv (derivation %store "world" @@ -236,8 +229,6 @@ (build-derivations %store (list drv)) #f)))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder, not found" (with-http-server '((404 "not found")) (let* ((drv (derivation %store "will-never-be-found" @@ -262,26 +253,24 @@ (build-derivations %store (list drv)) #f))) -(unless (http-server-can-listen?) - (test-skip 1)) (test-assert "'download' built-in builder, check mode" ;; Make sure rebuilding the 'builtin:download' derivation in check mode ;; works. See <http://bugs.gnu.org/25089>. - (let* ((text (random-text)) - (drv (derivation %store "world" - "builtin:download" '() - #:env-vars `(("url" - . ,(object->string (%local-url)))) - #:hash-algo 'sha256 - #:hash (gcrypt:sha256 (string->utf8 text))))) - (and (with-http-server `((200 ,text)) - (build-derivations %store (list drv))) - (with-http-server `((200 ,text)) - (build-derivations %store (list drv) - (build-mode check))) - (string=? (call-with-input-file (derivation->output-path drv) - get-string-all) - text)))) + (let* ((text (random-text))) + (with-http-server `((200 ,text)) + (let ((drv (derivation %store "world" + "builtin:download" '() + #:env-vars `(("url" + . ,(object->string (%local-url)))) + #:hash-algo 'sha256 + #:hash (gcrypt:sha256 (string->utf8 text))))) + (and drv (build-derivations %store (list drv)) + (with-http-server `((200 ,text)) + (build-derivations %store (list drv) + (build-mode check))) + (string=? (call-with-input-file (derivation->output-path drv) + get-string-all) + text)))))) (test-equal "derivation-name" "foo-0.0" |