import: hackage: Add new tests.

* tests/hackage.scm (eval-test-with-cabal): Add optional argument.
  (test-cabal-3): New variable and test.
  (test-read-cabal-1): Exercise more parsing variants.
This commit is contained in:
Federico Beffa 2015-11-25 13:58:06 +01:00
parent 96018e21e7
commit d3c827e419

View File

@ -50,8 +50,28 @@ build-depends:
}
")
;; Check compiler implementation test with and without spaces.
(define test-cabal-3
"name: foo
version: 1.0.0
homepage: http://test.org
synopsis: synopsis
description: description
license: BSD3
library
if impl(ghc >= 7.2 && < 7.6)
Build-depends: ghc-a
if impl(ghc>=7.2&&<7.6)
Build-depends: ghc-b
if impl(ghc == 7.8)
Build-depends:
HTTP >= 4000.2.5 && < 4000.3,
mtl >= 2.0 && < 3
")
;; A fragment of a real Cabal file with minor modification to check precedence
;; of 'and' over 'or'.
;; of 'and' over 'or', missing final newline, spaces between keywords and
;; parentheses and between key and column.
(define test-read-cabal-1
"name: test-me
library
@ -66,24 +86,23 @@ library
Build-depends: base >= 3 && < 4
else
Build-depends: base < 3
if flag(base4point8) || flag(base4) && flag(base3)
if flag(base4point8) || flag (base4) && flag(base3)
Build-depends: random
Build-depends: containers
Build-depends : containers
-- Modules that are always built.
Exposed-Modules:
Test.QuickCheck.Exception
")
Test.QuickCheck.Exception")
(test-begin "hackage")
(define (eval-test-with-cabal test-cabal)
(define* (eval-test-with-cabal test-cabal #:key (cabal-environment '()))
(mock
((guix import hackage) hackage-fetch
(lambda (name-version)
(call-with-input-string test-cabal
read-cabal)))
(match (hackage->guix-package "foo")
(match (hackage->guix-package "foo" #:cabal-environment cabal-environment)
(('package
('name "ghc-foo")
('version "1.0.0")
@ -116,6 +135,10 @@ library
(test-assert "hackage->guix-package test 2"
(eval-test-with-cabal test-cabal-2))
(test-assert "hackage->guix-package test 3"
(eval-test-with-cabal test-cabal-3
#:cabal-environment '(("impl" . "ghc-7.8"))))
(test-assert "read-cabal test 1"
(match (call-with-input-string test-read-cabal-1 read-cabal)
((("name" ("test-me"))