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:
parent
96018e21e7
commit
d3c827e419
1 changed files with 30 additions and 7 deletions
|
@ -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
|
;; 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
|
(define test-read-cabal-1
|
||||||
"name: test-me
|
"name: test-me
|
||||||
library
|
library
|
||||||
|
@ -66,24 +86,23 @@ library
|
||||||
Build-depends: base >= 3 && < 4
|
Build-depends: base >= 3 && < 4
|
||||||
else
|
else
|
||||||
Build-depends: base < 3
|
Build-depends: base < 3
|
||||||
if flag(base4point8) || flag(base4) && flag(base3)
|
if flag(base4point8) || flag (base4) && flag(base3)
|
||||||
Build-depends: random
|
Build-depends: random
|
||||||
Build-depends: containers
|
Build-depends : containers
|
||||||
|
|
||||||
-- Modules that are always built.
|
-- Modules that are always built.
|
||||||
Exposed-Modules:
|
Exposed-Modules:
|
||||||
Test.QuickCheck.Exception
|
Test.QuickCheck.Exception")
|
||||||
")
|
|
||||||
|
|
||||||
(test-begin "hackage")
|
(test-begin "hackage")
|
||||||
|
|
||||||
(define (eval-test-with-cabal test-cabal)
|
(define* (eval-test-with-cabal test-cabal #:key (cabal-environment '()))
|
||||||
(mock
|
(mock
|
||||||
((guix import hackage) hackage-fetch
|
((guix import hackage) hackage-fetch
|
||||||
(lambda (name-version)
|
(lambda (name-version)
|
||||||
(call-with-input-string test-cabal
|
(call-with-input-string test-cabal
|
||||||
read-cabal)))
|
read-cabal)))
|
||||||
(match (hackage->guix-package "foo")
|
(match (hackage->guix-package "foo" #:cabal-environment cabal-environment)
|
||||||
(('package
|
(('package
|
||||||
('name "ghc-foo")
|
('name "ghc-foo")
|
||||||
('version "1.0.0")
|
('version "1.0.0")
|
||||||
|
@ -116,6 +135,10 @@ library
|
||||||
(test-assert "hackage->guix-package test 2"
|
(test-assert "hackage->guix-package test 2"
|
||||||
(eval-test-with-cabal test-cabal-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"
|
(test-assert "read-cabal test 1"
|
||||||
(match (call-with-input-string test-read-cabal-1 read-cabal)
|
(match (call-with-input-string test-read-cabal-1 read-cabal)
|
||||||
((("name" ("test-me"))
|
((("name" ("test-me"))
|
||||||
|
|
Reference in a new issue