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