aboutsummaryrefslogtreecommitdiff
path: root/tests/lint.scm
diff options
context:
space:
mode:
authorTimothy Sample <samplet@ngyro.com>2020-11-03 15:30:28 -0500
committerTimothy Sample <samplet@ngyro.com>2020-11-21 22:11:36 -0500
commit464b1fffb0f08a452b4ee67ba23c87730d73568e (patch)
treee56ff4c08670df996ced3242f4528519c7996c52 /tests/lint.scm
parenteeee65076e3199c778b177e06de3aae7696dbb9f (diff)
downloadguix-464b1fffb0f08a452b4ee67ba23c87730d73568e.tar
guix-464b1fffb0f08a452b4ee67ba23c87730d73568e.tar.gz
lint: Add 'check-haskell-stackage' checker.
* guix/lint.scm (check-haskell-stackage): New procedure. (%network-dependent-checkers): Add 'haskell-stackage' checker. * guix/import/hackage.scm (%hackage-url): New variable. (hackage-source-url, hackage-cabal-url): Use it in place of a hard-coded string. * guix/import/stackage.scm (%stackage-url): Make it a parameter. (stackage-lts-info-fetch): Update accordingly. * tests/lint.scm ("hackage-stackage"): New test.
Diffstat (limited to 'tests/lint.scm')
-rw-r--r--tests/lint.scm32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/lint.scm b/tests/lint.scm
index bd052842f3..9b230814a5 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,6 +39,8 @@
#:use-module (guix swh)
#:use-module ((guix gexp) #:select (local-file))
#:use-module ((guix utils) #:select (call-with-temporary-directory))
+ #:use-module ((guix import hackage) #:select (%hackage-url))
+ #:use-module ((guix import stackage) #:select (%stackage-url))
#:use-module (gnu packages)
#:use-module (gnu packages glib)
#:use-module (gnu packages pkg-config)
@@ -1057,6 +1060,35 @@
(string-contains (single-lint-warning-message warnings)
"rate limit reached")))
+(test-skip (if (http-server-can-listen?) 0 1))
+(test-assert "haskell-stackage"
+ (let* ((stackage (string-append "{ \"packages\": [{"
+ " \"name\":\"x\","
+ " \"version\":\"1.0\" }]}"))
+ (packages (map (lambda (version)
+ (dummy-package
+ (string-append "ghc-x")
+ (version version)
+ (source
+ (dummy-origin
+ (method url-fetch)
+ (uri (string-append
+ "https://hackage.haskell.org/package/"
+ "x-" version "/x-" version ".tar.gz"))))))
+ '("0.9" "1.0" "2.0")))
+ (warnings (pk (with-http-server `((200 ,stackage) ; memoized
+ (200 "name: x\nversion: 1.0\n")
+ (200 "name: x\nversion: 1.0\n")
+ (200 "name: x\nversion: 1.0\n"))
+ (parameterize ((%hackage-url (%local-url))
+ (%stackage-url (%local-url)))
+ (append-map check-haskell-stackage packages))))))
+ (match warnings
+ (((? lint-warning? warning))
+ (and (string=? (package-version (lint-warning-package warning)) "2.0")
+ (string-contains (lint-warning-message warning)
+ "ahead of Stackage LTS version"))))))
+
(test-end "lint")
;; Local Variables: