summaryrefslogtreecommitdiff
path: root/tests/packages.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-01-22 22:42:57 +0100
committerLudovic Courtès <ludo@gnu.org>2017-01-23 22:23:41 +0100
commitfcd75bdbfa99d14363b905afbf914eec20e69df8 (patch)
tree38f9cfaf9c186fc6c9af54183efbd02fa1a13f70 /tests/packages.scm
parentc5746f239964a72642ac56640b8ff490d5bfa673 (diff)
downloadpatches-fcd75bdbfa99d14363b905afbf914eec20e69df8.tar
patches-fcd75bdbfa99d14363b905afbf914eec20e69df8.tar.gz
search-paths: Allow specs with #f as their separator.
This adds support for single-entry search paths. Fixes <http://bugs.gnu.org/25422>. Reported by Leo Famulari <leo@famulari.name>. * guix/search-paths.scm (<search-path-specification>)[separator]: Document as string or #f. (evaluate-search-paths): Add case for SEPARATOR as #f. (environment-variable-definition): Handle SEPARATOR being #f. * guix/build/utils.scm (list->search-path-as-string): Add case for SEPARATOR as #f. (search-path-as-string->list): Likewise. * guix/build/profiles.scm (abstract-profile): Likewise. * tests/search-paths.scm: New file. * Makefile.am (SCM_TESTS): Add it. * tests/packages.scm ("--search-paths with single-item search path"): New test. * gnu/packages/version-control.scm (git)[native-search-paths](separator): New field.
Diffstat (limited to 'tests/packages.scm')
-rw-r--r--tests/packages.scm49
1 files changed, 48 insertions, 1 deletions
diff --git a/tests/packages.scm b/tests/packages.scm
index 247f75cc43..962f120ea2 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,6 +42,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages guile)
#:use-module (gnu packages bootstrap)
+ #:use-module (gnu packages version-control)
#:use-module (gnu packages xml)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
@@ -979,6 +980,52 @@
(guix-package "-p" (derivation->output-path prof)
"--search-paths"))))))
+(test-assert "--search-paths with single-item search path"
+ ;; Make sure 'guix package --search-paths' correctly reports environment
+ ;; variables for things like 'GIT_SSL_CAINFO' that have #f as their
+ ;; separator, meaning that the first match wins.
+ (let* ((p1 (dummy-package "foo"
+ (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 "/etc/ssl/certs"))
+ (call-with-output-file
+ (string-append
+ out "/etc/ssl/certs/ca-certificates.crt")
+ (const #t))))))))
+ (p2 (package (inherit p1) (name "bar")))
+ (p3 (dummy-package "git"
+ ;; Provide a fake Git to avoid building the real one.
+ (build-system trivial-build-system)
+ (arguments
+ `(#:guile ,%bootstrap-guile
+ #:builder (mkdir (assoc-ref %outputs "out"))))
+ (native-search-paths (package-native-search-paths git))))
+ (prof1 (run-with-store %store
+ (profile-derivation
+ (packages->manifest (list p1 p3))
+ #:hooks '()
+ #:locales? #f)
+ #:guile-for-build (%guile-for-build)))
+ (prof2 (run-with-store %store
+ (profile-derivation
+ (packages->manifest (list p2 p3))
+ #:hooks '()
+ #:locales? #f)
+ #:guile-for-build (%guile-for-build))))
+ (build-derivations %store (list prof1 prof2))
+ (string-match (format #f "^export GIT_SSL_CAINFO=\"~a/etc/ssl/certs/ca-certificates.crt"
+ (regexp-quote (derivation->output-path prof1)))
+ (with-output-to-string
+ (lambda ()
+ (guix-package "-p" (derivation->output-path prof1)
+ "-p" (derivation->output-path prof2)
+ "--search-paths"))))))
+
(test-equal "specification->package when not found"
'quit
(catch 'quit