diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lint.scm | 88 | ||||
-rw-r--r-- | tests/store-database.scm | 26 |
2 files changed, 113 insertions, 1 deletions
diff --git a/tests/lint.scm b/tests/lint.scm index 95abd71378..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. ;;; @@ -36,6 +37,10 @@ #:use-module (guix lint) #:use-module (guix ui) #: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) @@ -344,6 +349,60 @@ (list (search-patch "this-patch-does-not-exist!")))))))) (check-patch-file-names pkg)))) +(test-assert "patch headers: no warnings" + (call-with-temporary-directory + (lambda (directory) + (call-with-output-file (string-append directory "/t.patch") + (lambda (port) + (display "This is a patch.\n\n--- a\n+++ b\n" + port))) + + (parameterize ((%patch-path (list directory))) + (let ((pkg (dummy-package "x" + (source (dummy-origin + (patches (search-patches "t.patch"))))))) + (null? (check-patch-headers pkg))))))) + +(test-equal "patch headers: missing comment" + "t.patch: patch lacks comment and upstream status" + (call-with-temporary-directory + (lambda (directory) + (call-with-output-file (string-append directory "/t.patch") + (lambda (port) + (display "\n--- a\n+++ b\n" + port))) + + (parameterize ((%patch-path (list directory))) + (let ((pkg (dummy-package "x" + (source (dummy-origin + (patches (search-patches "t.patch"))))))) + (single-lint-warning-message (check-patch-headers pkg))))))) + +(test-equal "patch headers: empty" + "t.patch: empty patch" + (call-with-temporary-directory + (lambda (directory) + (call-with-output-file (string-append directory "/t.patch") + (const #t)) + + (parameterize ((%patch-path '())) + (let ((pkg (dummy-package "x" + (source (dummy-origin + (patches + (list (local-file + (string-append directory + "/t.patch"))))))))) + (single-lint-warning-message (check-patch-headers pkg))))))) + +(test-equal "patch headers: patch not found" + "does-not-exist.patch: patch not found\n" + (parameterize ((%patch-path '())) + (let ((pkg (dummy-package "x" + (source (dummy-origin + (patches + (search-patches "does-not-exist.patch"))))))) + (single-lint-warning-message (check-patch-headers pkg))))) + (test-equal "derivation: invalid arguments" "failed to create x86_64-linux derivation: (wrong-type-arg \"map\" \"Wrong type argument: ~S\" (invalid-module) ())" (match (let ((pkg (dummy-package "x" @@ -1001,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: diff --git a/tests/store-database.scm b/tests/store-database.scm index 4d91884250..3b4ef43f6d 100644 --- a/tests/store-database.scm +++ b/tests/store-database.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,6 +21,8 @@ #:use-module (guix store) #:use-module (guix store database) #:use-module ((guix utils) #:select (call-with-temporary-output-file)) + #:use-module ((guix build utils) + #:select (mkdir-p delete-file-recursively)) #:use-module (srfi srfi-26) #:use-module (srfi srfi-64)) @@ -55,6 +57,28 @@ (list (stat:mtime (lstat file)) (stat:mtime (lstat ref))))))) +(test-equal "register-path, directory" + '(1 1 1) + (let ((file (string-append (%store-prefix) "/" (make-string 32 #\f) + "-fake-directory"))) + (when (valid-path? %store file) + (delete-paths %store (list file))) + (false-if-exception (delete-file-recursively file)) + + (let ((drv (string-append file ".drv"))) + (mkdir-p (string-append file "/a")) + (call-with-output-file (string-append file "/a/b") + (const #t)) + (register-path file #:deriver drv) + + (and (valid-path? %store file) + (null? (references %store file)) + (null? (valid-derivers %store file)) + (null? (referrers %store file)) + (list (stat:mtime (lstat file)) + (stat:mtime (lstat (string-append file "/a"))) + (stat:mtime (lstat (string-append file "/a/b")))))))) + (test-equal "new database" (list 1 2) (call-with-temporary-output-file |