summaryrefslogtreecommitdiff
path: root/tests/gexp.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-10-27 15:45:45 +0200
committerLudovic Courtès <ludo@gnu.org>2018-10-27 16:39:29 +0200
commit932d1600564cbf359a6ccd1086b968a934bef8e5 (patch)
tree36b8f047e54ec51c1638510405e9e8283171e963 /tests/gexp.scm
parent003789e837d8524edf524e25fd753dbd801b583f (diff)
gexp: 'gexp-modules' now consistently deletes duplicates.
Fixes <https://bugs.gnu.org/32966>. Reported by Clément Lassieur <clement@lassieur.org>. * guix/gexp.scm (gexp-attribute): Add 'equal?' optional parameter; pass it to 'delete-duplicates'. (gexp-modules)[module=?]: New procedure. Pass it to 'gexp-attribute'. * tests/gexp.scm ("gexp-modules deletes duplicates"): New test.
Diffstat (limited to 'tests/gexp.scm')
-rw-r--r--tests/gexp.scm16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 813ea2ff6f..467370f8cb 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -680,6 +680,22 @@
#~(foo #$@(list (with-imported-modules '((foo)) #~+)
(with-imported-modules '((bar)) #~-)))))
+(test-assert "gexp-modules deletes duplicates" ;<https://bugs.gnu.org/32966>
+ (let ((make-file (lambda ()
+ ;; Use 'eval' to make sure we get an object that's not
+ ;; 'eq?' nor 'equal?' due to the closures it embeds.
+ (eval '(scheme-file "bar.scm" #~(define-module (bar)))
+ (current-module)))))
+ (define result
+ ((@@ (guix gexp) gexp-modules)
+ (with-imported-modules `(((bar) => ,(make-file))
+ ((bar) => ,(make-file))
+ (foo) (foo))
+ #~+)))
+
+ (match result
+ (((('bar) '=> (? scheme-file?)) ('foo)) #t))))
+
(test-equal "gexp-modules and literal Scheme object"
'()
(gexp-modules #t))