From b2d58cd80a04ccab09a947d187ae55ff199eae08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 9 Jan 2013 22:09:58 +0100 Subject: union: Detect collisions, and delete duplicate leaves. * guix/build/union.scm (delete-duplicate-leaves): New procedure. (union-build)[leaf=?, resolve-collision]: New procedures. Use `delete-duplicate-leaves' on the result of `tree-union'. * tests/union.scm ("delete-duplicate-leaves, default", "delete-duplicate-leaves, file names"): New tests. --- tests/union.scm | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'tests/union.scm') diff --git a/tests/union.scm b/tests/union.scm index 317d49dc35..a3859434a2 100644 --- a/tests/union.scm +++ b/tests/union.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012 Ludovic Courtès +;;; Copyright © 2012, 2013 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -64,6 +64,25 @@ (bin make) (share (doc (make README)))))) +(test-equal "delete-duplicate-leaves, default" + '(bin make touch ls) + (delete-duplicate-leaves '(bin ls make touch ls))) + +(test-equal "delete-duplicate-leaves, file names" + '("doc" ("info" + "/binutils/ld.info" + "/gcc/gcc.info" + "/binutils/standards.info")) + (let ((leaf=? (lambda (a b) + (string=? (basename a) (basename b))))) + (delete-duplicate-leaves '("doc" + ("info" + "/binutils/ld.info" + "/binutils/standards.info" + "/gcc/gcc.info" + "/gcc/standards.info")) + leaf=?))) + (test-skip (if (and %store (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV))) -- cgit v1.2.3