~ruther/guix-local

506abddb99e02f824bff7ed7d7f7b37c4dafe0a7 — Ricardo Wurmus 9 years ago 51d8395
tests: Mock up http-fetch in import tests.

This is a follow-up to commit 63773200d7ac68fcaee6efd9ffe8ea7aa3fafa38.

* tests/gem.scm ("gem->guix-package"): Replace mock definition of
"url-fetch" with "http-fetch".
* tests/pypi.scm ("pypi->guix-package"): Add mock definition of
"http-fetch".
2 files changed, 55 insertions(+), 50 deletions(-)

M tests/gem.scm
M tests/pypi.scm
M tests/gem.scm => tests/gem.scm +5 -5
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 45,13 46,12 @@

(test-assert "gem->guix-package"
  ;; Replace network resources with sample data.
  (mock ((guix import utils) url-fetch
         (lambda (url file-name)
  (mock ((guix http-client) http-fetch
         (lambda (url)
           (match url
             ("https://rubygems.org/api/v1/gems/foo.json"
              (with-output-to-file file-name
                (lambda ()
                  (display test-json))))
              (values (open-input-string test-json)
                      (string-length test-json)))
             (_ (error "Unexpected URL: " url)))))
    (match (gem->guix-package "foo")
      (('package

M tests/pypi.scm => tests/pypi.scm +50 -45
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 91,51 92,55 @@ baz > 13.37")

(test-assert "pypi->guix-package"
  ;; Replace network resources with sample data.
  (mock ((guix import utils) url-fetch
         (lambda (url file-name)
           (match url
             ("https://pypi.python.org/pypi/foo/json"
              (with-output-to-file file-name
                (lambda ()
                  (display test-json))))
             ("https://example.com/foo-1.0.0.tar.gz"
               (begin
                 (mkdir "foo-1.0.0")
                 (with-output-to-file "foo-1.0.0/requirements.txt"
                   (lambda ()
                     (display test-requirements)))
                 (system* "tar" "czvf" file-name "foo-1.0.0/")
                 (delete-file-recursively "foo-1.0.0")
                 (set! test-source-hash
                       (call-with-input-file file-name port-sha256))))
             ("https://example.com/foo-1.0.0-py2.py3-none-any.whl" #f)
             (_ (error "Unexpected URL: " url)))))
    (match (pypi->guix-package "foo")
      (('package
         ('name "python-foo")
         ('version "1.0.0")
         ('source ('origin
                    ('method 'url-fetch)
                    ('uri (string-append "https://example.com/foo-"
                                         version ".tar.gz"))
                    ('sha256
                     ('base32
                      (? string? hash)))))
         ('build-system 'python-build-system)
         ('propagated-inputs
          ('quasiquote
           (("python-bar" ('unquote 'python-bar))
            ("python-baz" ('unquote 'python-baz))
            ("python-setuptools" ('unquote 'python-setuptools)))))
         ('home-page "http://example.com")
         ('synopsis "summary")
         ('description "summary")
         ('license 'license:lgpl2.0))
       (string=? (bytevector->nix-base32-string
                  test-source-hash)
                 hash))
      (x
       (pk 'fail x #f)))))
    (mock ((guix import utils) url-fetch
           (lambda (url file-name)
             (match url
               ("https://example.com/foo-1.0.0.tar.gz"
                (begin
                  (mkdir "foo-1.0.0")
                  (with-output-to-file "foo-1.0.0/requirements.txt"
                    (lambda ()
                      (display test-requirements)))
                  (system* "tar" "czvf" file-name "foo-1.0.0/")
                  (delete-file-recursively "foo-1.0.0")
                  (set! test-source-hash
                    (call-with-input-file file-name port-sha256))))
               ("https://example.com/foo-1.0.0-py2.py3-none-any.whl" #f)
               (_ (error "Unexpected URL: " url)))))
          (mock ((guix http-client) http-fetch
                 (lambda (url)
                   (match url
                     ("https://pypi.python.org/pypi/foo/json"
                      (values (open-input-string test-json)
                              (string-length test-json)))
                     ("https://example.com/foo-1.0.0-py2.py3-none-any.whl" #f)
                     (_ (error "Unexpected URL: " url)))))
                (match (pypi->guix-package "foo")
                  (('package
                     ('name "python-foo")
                     ('version "1.0.0")
                     ('source ('origin
                                ('method 'url-fetch)
                                ('uri (string-append "https://example.com/foo-"
                                                     version ".tar.gz"))
                                ('sha256
                                 ('base32
                                  (? string? hash)))))
                     ('build-system 'python-build-system)
                     ('propagated-inputs
                      ('quasiquote
                       (("python-bar" ('unquote 'python-bar))
                        ("python-baz" ('unquote 'python-baz))
                        ("python-setuptools" ('unquote 'python-setuptools)))))
                     ('home-page "http://example.com")
                     ('synopsis "summary")
                     ('description "summary")
                     ('license 'license:lgpl2.0))
                   (string=? (bytevector->nix-base32-string
                              test-source-hash)
                             hash))
                  (x
                   (pk 'fail x #f))))))

(test-skip (if (which "zip") 0 1))
(test-assert "pypi->guix-package, wheels"