diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-05-01 17:24:41 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-05-01 17:28:20 +0200 |
commit | dff3189c7d5d95177ff592789e1bcb73a4adcc9e (patch) | |
tree | 897cb0f23c7b51a248ac9284883fafec81ed0dfa /tests/publish.scm | |
parent | e93793059d4a15894e407525bdc33fd06e2b104a (diff) | |
download | guix-dff3189c7d5d95177ff592789e1bcb73a4adcc9e.tar.gz |
publish: Produce a "FileSize" narinfo field when possible.
* guix/scripts/publish.scm (narinfo-string): Add #:file-size parameter. Produce a "FileSize" field when COMPRESSION is eq? to '%no-compression' or when FILE-SIZE is true. (bake-narinfo+nar): Pass #:file-size. * tests/publish.scm ("/*.narinfo") ("/*.narinfo with properly encoded '+' sign") ("with cache"): Check for "FileSize".
Diffstat (limited to 'tests/publish.scm')
-rw-r--r-- | tests/publish.scm | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/tests/publish.scm b/tests/publish.scm index 233b71ce93..6238f37bc1 100644 --- a/tests/publish.scm +++ b/tests/publish.scm @@ -122,13 +122,15 @@ URL: nar/~a Compression: none NarHash: sha256:~a NarSize: ~d -References: ~a~%" +References: ~a +FileSize: ~a~%" %item (basename %item) (bytevector->nix-base32-string (path-info-hash info)) (path-info-nar-size info) - (basename (first (path-info-references info))))) + (basename (first (path-info-references info))) + (path-info-nar-size info))) (signature (base64-encode (string->utf8 (canonical-sexp->string @@ -152,11 +154,13 @@ URL: nar/~a Compression: none NarHash: sha256:~a NarSize: ~d -References: ~%" +References: ~%\ +FileSize: ~a~%" item (uri-encode (basename item)) (bytevector->nix-base32-string (path-info-hash info)) + (path-info-nar-size info) (path-info-nar-size info))) (signature (base64-encode (string->utf8 @@ -323,6 +327,7 @@ References: ~%" ("Compression" . "gzip")) 200 ;nar/gzip/… #t ;Content-Length + #t ;FileSize 200) ;nar/… (call-with-temporary-directory (lambda (cache) @@ -351,10 +356,11 @@ References: ~%" (response (http-get url))) (and (= 404 (response-code response)) (wait-for-file cached) - (let ((body (http-get-port url)) - (compressed (http-get nar-url)) - (uncompressed (http-get (string-append base "nar/" - (basename %item))))) + (let* ((body (http-get-port url)) + (compressed (http-get nar-url)) + (uncompressed (http-get (string-append base "nar/" + (basename %item)))) + (narinfo (recutils->alist body))) (list (file-exists? nar) (filter (lambda (item) (match item @@ -362,10 +368,13 @@ References: ~%" (("StorePath" . _) #t) (("URL" . _) #t) (_ #f))) - (recutils->alist body)) + narinfo) (response-code compressed) (= (response-content-length compressed) (stat:size (stat nar))) + (= (string->number + (assoc-ref narinfo "FileSize")) + (stat:size (stat nar))) (response-code uncompressed))))))))) (test-end "publish") |