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
 | 
			
		||||
;; 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
 | 
			
		||||
| 
						 | 
				
			
			@ -72,18 +92,17 @@ library
 | 
			
		|||
 | 
			
		||||
  -- 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"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue