From: Robert Vollmert <rob@vllmrt.net>
To: 35812@debbugs.gnu.org
Subject: [bug#35812] [PATCH] fix hackage cabal tests
Date: Mon, 20 May 2019 21:06:59 +0200 [thread overview]
Message-ID: <A3819F46-CC09-47A7-A1C6-41544086132F@vllmrt.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 156 bytes --]
Hackage cabal tests didn’t run independently due to memoization,
and test-cabal-6 was failing.
Let me know if anything should be done differently.
[-- Attachment #2: 0001-tests-fix-cabal-tests-to-test-and-pass.patch --]
[-- Type: application/octet-stream, Size: 5447 bytes --]
From 8b6dac85a9f6c4e851c1a75a4958dff7915fb2f1 Mon Sep 17 00:00:00 2001
From: Robert Vollmert <rob@vllmrt.net>
Date: Fri, 17 May 2019 10:48:42 +0200
Subject: [PATCH] tests: fix cabal tests to test and pass
* guix/import/hackage.scm: export unmemoized import function
* tests/hackage.scm: use unmemoized import function to make tests independent
* tests/hackage.scm: fix failing test-cabal-6 by providing expected output
---
guix/import/hackage.scm | 31 +++++++++++++++++--------------
tests/hackage.scm | 39 ++++++++++++++++++++++++++++++++++++---
2 files changed, 53 insertions(+), 17 deletions(-)
diff --git a/guix/import/hackage.scm b/guix/import/hackage.scm
index 2a51420d14..5b80a7ea1d 100644
--- a/guix/import/hackage.scm
+++ b/guix/import/hackage.scm
@@ -40,6 +40,7 @@
#:use-module (guix packages)
#:use-module ((guix utils) #:select (call-with-temporary-output-file))
#:export (hackage->guix-package
+ hackage->guix-package-impl
hackage-recursive-import
%hackage-updater
@@ -277,13 +278,12 @@ 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-impl
+ (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
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
@@ -293,13 +293,16 @@ 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
+ (memoize hackage->guix-package-impl))
(define* (hackage-recursive-import package-name . args)
(recursive-import package-name #f
diff --git a/tests/hackage.scm b/tests/hackage.scm
index e17851a213..e56aa996d6 100644
--- a/tests/hackage.scm
+++ b/tests/hackage.scm
@@ -161,7 +161,7 @@ library
(lambda (name-version)
(call-with-input-string test-cabal
read-cabal)))
- (match (hackage->guix-package "foo" #:cabal-environment cabal-environment)
+ (match (hackage->guix-package-impl "foo" #:cabal-environment cabal-environment)
(('package
('name "ghc-foo")
('version "1.0.0")
@@ -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-impl "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)
--
2.21.0
next reply other threads:[~2019-05-20 19:08 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-20 19:06 Robert Vollmert [this message]
2019-05-21 14:48 ` [bug#35812] [PATCH] fix hackage cabal tests Ludovic Courtès
2019-05-21 15:10 ` Robert Vollmert
2019-05-26 21:23 ` bug#35812: " Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=A3819F46-CC09-47A7-A1C6-41544086132F@vllmrt.net \
--to=rob@vllmrt.net \
--cc=35812@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).