guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/03: import: hackage: Fix Cabal test.


From: guix-commits
Subject: 03/03: import: hackage: Fix Cabal test.
Date: Sun, 26 May 2019 17:21:53 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit ad7466aafd7f166d0b6be5eb32dda1d3ee8a6445
Author: Ludovic Courtès <address@hidden>
Date:   Sun May 26 23:18:21 2019 +0200

    import: hackage: Fix Cabal test.
    
    * guix/import/hackage.scm (hackage->guix-package): Remove call to 'memoize'.
    (hackage->guix-package/m): New procedure.
    (hackage-recursive-import): Use it.
    * tests/hackage.scm ("hackage->guix-package test 6"): Adjust.
    
    Co-authored-by: Robert Vollmert <address@hidden>
---
 guix/import/hackage.scm | 32 +++++++++++++++++---------------
 tests/hackage.scm       | 37 +++++++++++++++++++++++++++++++++++--
 2 files changed, 52 insertions(+), 17 deletions(-)

diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm
index 2731b4c..bf7e99d 100644
--- a/guix/import/hackage.scm
+++ b/guix/import/hackage.scm
@@ -279,13 +279,11 @@ representation of a Cabal file as produced by 
'read-cabal'."
         (license ,(string->license (cabal-package-license cabal))))
      (append hackage-dependencies hackage-native-dependencies))))
 
-(define hackage->guix-package
-  (memoize
-   (lambda* (package-name #:key
-                          (include-test-dependencies? #t)
-                          (port #f)
-                          (cabal-environment '()))
-     "Fetch the Cabal file for PACKAGE-NAME from hackage.haskell.org, or, if 
the
+(define* (hackage->guix-package package-name #:key
+                                (include-test-dependencies? #t)
+                                (port #f)
+                                (cabal-environment '()))
+  "Fetch the Cabal file for PACKAGE-NAME from hackage.haskell.org, or, if the
 called with keyword parameter PORT, from PORT.  Return the `package'
 S-expression corresponding to that package, or #f on failure.
 CABAL-ENVIRONMENT is an alist defining the environment in which the Cabal
@@ -295,18 +293,22 @@ symbol 'true' or 'false'.  The value associated with 
other keys has to conform
 to the Cabal file format definition.  The default value associated with the
 keys \"os\", \"arch\" and \"impl\" is \"linux\", \"x86_64\" and \"ghc\"
 respectively."
-     (let ((cabal-meta (if port
-                           (read-cabal (canonical-newline-port port))
-                           (hackage-fetch package-name))))
-       (and=> cabal-meta (compose (cut hackage-module->sexp <>
-                                       #:include-test-dependencies?
-                                       include-test-dependencies?)
-                                  (cut eval-cabal <> cabal-environment)))))))
+  (let ((cabal-meta (if port
+                        (read-cabal (canonical-newline-port port))
+                        (hackage-fetch package-name))))
+    (and=> cabal-meta (compose (cut hackage-module->sexp <>
+                                    #:include-test-dependencies?
+                                    include-test-dependencies?)
+                               (cut eval-cabal <> cabal-environment)))))
+
+(define hackage->guix-package/m                   ;memoized variant
+  (memoize hackage->guix-package))
 
 (define* (hackage-recursive-import package-name . args)
   (recursive-import package-name #f
                     #:repo->guix-package (lambda (name repo)
-                                           (apply hackage->guix-package (cons 
name args)))
+                                           (apply hackage->guix-package/m
+                                                  (cons name args)))
                     #:guix-name hackage-name->package-name))
 
 (define (hackage-package? package)
diff --git a/tests/hackage.scm b/tests/hackage.scm
index e17851a..0efad06 100644
--- a/tests/hackage.scm
+++ b/tests/hackage.scm
@@ -207,8 +207,41 @@ library
                         #:cabal-environment '(("impl" . "ghc-7.8"))))
 
 (test-assert "hackage->guix-package test 6"
-  (eval-test-with-cabal test-cabal-6
-                        #:cabal-environment '(("impl" . "ghc-7.8"))))
+  (mock
+   ((guix import hackage) hackage-fetch
+    (lambda (name-version)
+      (call-with-input-string test-cabal-6
+        read-cabal)))
+   (match (hackage->guix-package "foo")
+     (('package
+        ('name "ghc-foo")
+        ('version "1.0.0")
+        ('source
+         ('origin
+           ('method 'url-fetch)
+           ('uri ('string-append
+                  "https://hackage.haskell.org/package/foo/foo-";
+                  'version
+                  ".tar.gz"))
+           ('sha256
+            ('base32
+             (? string? hash)))))
+        ('build-system 'haskell-build-system)
+        ('inputs
+         ('quasiquote
+          (("ghc-b" ('unquote 'ghc-b))
+           ("ghc-http" ('unquote 'ghc-http))
+           ("ghc-mtl" ('unquote 'ghc-mtl)))))
+        ('native-inputs
+         ('quasiquote
+          (("ghc-haskell-gi" ('unquote 'ghc-haskell-gi)))))
+        ('home-page "http://test.org";)
+        ('synopsis (? string?))
+        ('description (? string?))
+        ('license 'bsd-3))
+      #t)
+     (x
+      (pk 'fail x #f)))))
 
 (test-assert "read-cabal test 1"
   (match (call-with-input-string test-read-cabal-1 read-cabal)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]