summary refs log tree commit diff
path: root/tests/gexp.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-11-30 17:17:00 +0100
committerLudovic Courtès <ludo@gnu.org>2019-11-30 23:50:40 +0100
commit99c45877a984dd0148151b2e304afef6fb04f1a5 (patch)
tree39a1e9ff9cbcb619842b6dea70e7efb4126b28c4 /tests/gexp.scm
parentd70478da2b878350450b976686f29712c06745f3 (diff)
downloadguix-99c45877a984dd0148151b2e304afef6fb04f1a5.tar.gz
gexp: 'local-file' properly resolves non-literal relative file names.
* guix/gexp.scm (local-file): Distinguish the case where FILE is a
literal string and when it's not.  Add a clause for when FILE is not a
literal string.
* tests/gexp.scm ("local-file, non-literal relative file name"): New test.
* doc/guix.texi (G-Expressions): Update accordingly.
Diffstat (limited to 'tests/gexp.scm')
-rw-r--r--tests/gexp.scm8
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 50d0948659..84c16422c2 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -170,6 +170,14 @@
         (let ((file (local-file "../guix/base32.scm")))
           (local-file-absolute-file-name file)))))
 
+(test-equal "local-file, non-literal relative file name"
+  (canonicalize-path (search-path %load-path "guix/base32.scm"))
+  (let ((directory (dirname (search-path %load-path
+                                         "guix/build-system/gnu.scm"))))
+    (with-directory-excursion directory
+      (let ((file (local-file (string-copy "../base32.scm"))))
+        (local-file-absolute-file-name file)))))
+
 (test-assertm "local-file, #:select?"
   (mlet* %store-monad ((select? -> (lambda (file stat)
                                      (member (basename file)