mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 13:28:12 -05:00
guix-download: Error out when the HTTP response code is not 200.
* guix-download.in (http-fetch): Leave with an error message when RESPONSE's code is not 200. * tests/guix-download.sh: New file. * Makefile.am (TESTS): Add it.
This commit is contained in:
parent
912209ee61
commit
37d19403e7
3 changed files with 36 additions and 2 deletions
|
@ -145,6 +145,7 @@ TESTS = \
|
||||||
tests/snix.scm \
|
tests/snix.scm \
|
||||||
tests/union.scm \
|
tests/union.scm \
|
||||||
tests/guix-build.sh \
|
tests/guix-build.sh \
|
||||||
|
tests/guix-download.sh \
|
||||||
tests/guix-package.sh
|
tests/guix-package.sh
|
||||||
|
|
||||||
TEST_EXTENSIONS = .scm .sh
|
TEST_EXTENSIONS = .scm .sh
|
||||||
|
|
|
@ -32,6 +32,7 @@ exec ${GUILE-@GUILE@} -L "@guilemoduledir@" -l "$0" \
|
||||||
(define-module (guix-download)
|
(define-module (guix-download)
|
||||||
#:use-module (web uri)
|
#:use-module (web uri)
|
||||||
#:use-module (web client)
|
#:use-module (web client)
|
||||||
|
#:use-module (web response)
|
||||||
#:use-module (guix ui)
|
#:use-module (guix ui)
|
||||||
#:use-module (guix store)
|
#:use-module (guix store)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
|
@ -58,8 +59,13 @@ exec ${GUILE-@GUILE@} -L "@guilemoduledir@" -l "$0" \
|
||||||
|
|
||||||
(define (http-fetch url port)
|
(define (http-fetch url port)
|
||||||
"Fetch from URL over HTTP and write the result to PORT."
|
"Fetch from URL over HTTP and write the result to PORT."
|
||||||
(let-values (((response data) (http-get url #:decode-body? #f)))
|
(let*-values (((response data) (http-get url #:decode-body? #f))
|
||||||
(put-bytevector port data)))
|
((code) (response-code response)))
|
||||||
|
(if (= code 200)
|
||||||
|
(put-bytevector port data)
|
||||||
|
(leave (_ "failed to download from `~a': ~a: ~a~%")
|
||||||
|
(uri->string url)
|
||||||
|
code (response-reason-phrase response)))))
|
||||||
|
|
||||||
(define (ftp-fetch url port)
|
(define (ftp-fetch url port)
|
||||||
"Fetch from URL over FTP and write the result to PORT."
|
"Fetch from URL over FTP and write the result to PORT."
|
||||||
|
|
27
tests/guix-download.sh
Normal file
27
tests/guix-download.sh
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
|
||||||
|
# Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
#
|
||||||
|
# This file is part of Guix.
|
||||||
|
#
|
||||||
|
# Guix is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
# your option) any later version.
|
||||||
|
#
|
||||||
|
# Guix is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test the `guix-download' command-line utility.
|
||||||
|
#
|
||||||
|
|
||||||
|
guix-download --version
|
||||||
|
|
||||||
|
# Make sure it fails here.
|
||||||
|
if guix-download http://www.example.com/does-not-exist
|
||||||
|
then false; else true; fi
|
Loading…
Reference in a new issue