3 # This file is part of GNU Stow.
5 # GNU Stow is free software: you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # GNU Stow is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see https://www.gnu.org/licenses/.
27 use Test
::More tests
=> 4;
28 use English
qw(-no_match_vars);
31 cd
("$TEST_DIR/target");
33 my $stow = new_Stow
(dir
=> '../stow');
35 # Note that each of the following tests use a distinct set of files
38 # can fold a simple tree
41 make_path
('../stow/pkg1/bin1');
42 make_file
('../stow/pkg1/bin1/file1');
44 make_link
('bin1/file1','../../stow/pkg1/bin1/file1');
46 is
( $stow->foldable('bin1'), '../stow/pkg1/bin1' => q
(can fold a simple tree
) );
49 # can't fold an empty directory
52 make_path
('../stow/pkg2/bin2');
53 make_file
('../stow/pkg2/bin2/file2');
56 is
( $stow->foldable('bin2'), '' => q
(can
't fold an empty directory) );
59 # can't fold
if dir contains a non
-link
62 make_path
('../stow/pkg3/bin3');
63 make_file
('../stow/pkg3/bin3/file3');
65 make_link
('bin3/file3','../../stow/pkg3/bin3/file3');
66 make_file
('bin3/non-link');
68 is
( $stow->foldable('bin3'), '' => q
(can
't fold a dir containing non-links) );
71 # can't fold
if links point to different directories
75 make_path
('../stow/pkg4a/bin4');
76 make_file
('../stow/pkg4a/bin4/file4a');
77 make_link
('bin4/file4a','../../stow/pkg4a/bin4/file4a');
78 make_path
('../stow/pkg4b/bin4');
79 make_file
('../stow/pkg4b/bin4/file4b');
80 make_link
('bin4/file4b','../../stow/pkg4b/bin4/file4b');
82 is
( $stow->foldable('bin4'), '' => q
(can
't fold if links point to different dirs) );