diff options
author | Ludovic Courtès <ludo@gnu.org> | 2024-07-18 17:30:01 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2024-07-18 17:31:19 +0200 |
commit | e3dfed59d39ac60dd2e2b9ef9f4ef63a2a081f41 (patch) | |
tree | bd05566a604cc681bdca1cc47f55cacafd59ebf9 | |
parent | 589c5e254635e70636fa536b5126e66d8a0e6537 (diff) | |
download | guix-e3dfed59d39ac60dd2e2b9ef9f4ef63a2a081f41.tar.gz guix-e3dfed59d39ac60dd2e2b9ef9f4ef63a2a081f41.zip |
modules: ‘file-name->module-name’ strips leading “./”.
Fixes <https://issues.guix.gnu.org/71979>.
* guix/modules.scm (file-name->module-name): Strip leading “.” component
from FILE.
* tests/modules.scm ("file-name->module-name")
("file-name->module-name, leading dot"): New tests.
Reported-by: Tomas Volf <~@wolfsden.cz>
Change-Id: I3d1b9f3f21448050cac4f3b1aed5f8f03758d4c9
-rw-r--r-- | guix/modules.scm | 6 | ||||
-rw-r--r-- | tests/modules.scm | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/guix/modules.scm b/guix/modules.scm index 77e1c2b6f4..74400ffacc 100644 --- a/guix/modules.scm +++ b/guix/modules.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016-2019, 2021-2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016-2019, 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -104,7 +104,9 @@ depends on." (lambda (file) "Return the module name (a list of symbols) corresponding to FILE." (map string->symbol - (string-tokenize (string-drop-right file 4) not-slash))))) + (match (string-tokenize (string-drop-right file 4) not-slash) + (("." . rest) rest) ;strip the leading "." + (lst lst)))))) (define (module-name->file-name module) "Return the file name for MODULE." diff --git a/tests/modules.scm b/tests/modules.scm index e70d2d9e08..bb2c70e287 100644 --- a/tests/modules.scm +++ b/tests/modules.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016-2017, 2024 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -65,4 +65,12 @@ (source-module-closure '((baz)) (list directory) #:select? (const #t)))))) +(test-equal "file-name->module-name" + '(guix foo) + (file-name->module-name "guix/foo.scm")) + +(test-equal "file-name->module-name, leading dot" + '(guix foo) + (file-name->module-name "./guix/foo.scm")) + (test-end) |