diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-01-16 13:27:03 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-01-16 13:27:03 +0100 |
commit | 57b7e1a62d2269bfd9d37f88bae92c829222f8fc (patch) | |
tree | 5e6395e08025eb80de2040d77ac6febb558d2a72 /tests/packages.scm | |
parent | 72b703cdcaec260733a4e30800cef5eab3f071a6 (diff) | |
parent | b01a0ba86e93012044f42c41ba5cbc7d7936c356 (diff) | |
download | gnu-guix-57b7e1a62d2269bfd9d37f88bae92c829222f8fc.tar gnu-guix-57b7e1a62d2269bfd9d37f88bae92c829222f8fc.tar.gz |
Merge branch 'core-updates'
Conflicts:
gnu/packages/bootstrap.scm
Diffstat (limited to 'tests/packages.scm')
-rw-r--r-- | tests/packages.scm | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/tests/packages.scm b/tests/packages.scm index 3ee44adc98..bd5ba3ee92 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -19,6 +19,7 @@ (define-module (test-packages) #:use-module (guix tests) #:use-module (guix store) + #:use-module (guix monads) #:use-module ((guix utils) ;; Rename the 'location' binding to allow proper syntax ;; matching when setting the 'location' field of a package. @@ -31,10 +32,13 @@ #:use-module (guix build-system) #:use-module (guix build-system trivial) #:use-module (guix build-system gnu) + #:use-module (guix profiles) + #:use-module (guix scripts package) #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages guile) #:use-module (gnu packages bootstrap) + #:use-module (gnu packages xml) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) @@ -328,10 +332,10 @@ search-paths))))))) (x (list (search-path-specification (variable "GUILE_LOAD_PATH") - (directories '("share/guile/site/2.0"))) + (files '("share/guile/site/2.0"))) (search-path-specification (variable "GUILE_LOAD_COMPILED_PATH") - (directories '("share/guile/site/2.0"))))) + (files '("share/guile/site/2.0"))))) (a (package (inherit (dummy-package "guile")) (build-system s) (native-search-paths x))) @@ -527,6 +531,53 @@ (((? (cut eq? hello <>))) #t) (wrong (pk 'find-packages-by-name wrong #f)))) +(test-assert "--search-paths with pattern" + ;; Make sure 'guix package --search-paths' correctly reports environment + ;; variables when file patterns are used (in particular, it must follow + ;; symlinks when looking for 'catalog.xml'.) To do that, we rely on the + ;; libxml2 package specification, which contains such a definition. + (let* ((p1 (package + (name "foo") (version "0") (source #f) + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils)) + (let ((out (assoc-ref %outputs "out"))) + (mkdir-p (string-append out "/xml/bar/baz")) + (call-with-output-file + (string-append out "/xml/bar/baz/catalog.xml") + (lambda (port) + (display "xml? wat?!" port))))))) + (synopsis #f) (description #f) + (home-page #f) (license #f))) + (p2 (package + ;; Provide a fake libxml2 to avoid building the real one. This + ;; is OK because 'guix package' gets search path specifications + ;; from the same-named package found in the distro. + (name "libxml2") (version "0.0.0") (source #f) + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:builder (mkdir (assoc-ref %outputs "out")))) + (native-search-paths (package-native-search-paths libxml2)) + (synopsis #f) (description #f) + (home-page #f) (license #f))) + (prof (run-with-store %store + (profile-derivation + (manifest (map package->manifest-entry + (list p1 p2))) + #:info-dir? #f) + #:guile-for-build (%guile-for-build)))) + (build-derivations %store (list prof)) + (string-match (format #f "^export XML_CATALOG_FILES=\"~a/xml/+bar/baz/catalog\\.xml\"\n" + (derivation->output-path prof)) + (with-output-to-string + (lambda () + (guix-package "-p" (derivation->output-path prof) + "--search-paths")))))) + (test-end "packages") |