Archived
1
0
Fork 0

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 ;; 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"))