Don't tolerate '' as value for $target parameter to (un)stow_contents
This commit is contained in:
parent
063331c34d
commit
1d3f45580b
4 changed files with 40 additions and 35 deletions
29
stow.in
29
stow.in
|
@ -113,13 +113,13 @@ if (not caller()) {
|
||||||
if ($Option{'compat'}) {
|
if ($Option{'compat'}) {
|
||||||
unstow_contents_orig(
|
unstow_contents_orig(
|
||||||
join_paths($Stow_Path, $package), # path to package
|
join_paths($Stow_Path, $package), # path to package
|
||||||
'', # target is current_dir
|
'.', # target is current_dir
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
unstow_contents(
|
unstow_contents(
|
||||||
join_paths($Stow_Path, $package), # path to package
|
join_paths($Stow_Path, $package), # path to package
|
||||||
'', # target is current_dir
|
'.', # target is current_dir
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
debug(2, "Unstowing package $package... done");
|
debug(2, "Unstowing package $package... done");
|
||||||
|
@ -132,7 +132,7 @@ if (not caller()) {
|
||||||
debug(2, "Stowing package $package...");
|
debug(2, "Stowing package $package...");
|
||||||
stow_contents(
|
stow_contents(
|
||||||
join_paths($Stow_Path, $package), # path package
|
join_paths($Stow_Path, $package), # path package
|
||||||
'', # target is current dir
|
'.', # target is current dir
|
||||||
join_paths($Stow_Path, $package), # source from target
|
join_paths($Stow_Path, $package), # source from target
|
||||||
);
|
);
|
||||||
debug(2, "Stowing package $package... done");
|
debug(2, "Stowing package $package... done");
|
||||||
|
@ -407,9 +407,10 @@ sub stow_contents {
|
||||||
debug(2, "Stowing contents of $path (cwd is $cwd)");
|
debug(2, "Stowing contents of $path (cwd is $cwd)");
|
||||||
debug(3, "--- $target => $source");
|
debug(3, "--- $target => $source");
|
||||||
|
|
||||||
if (not -d $path) {
|
error("stow_contents() called with non-directory path: $path")
|
||||||
error("stow_contents() called on a non-directory: $path");
|
unless -d $path;
|
||||||
}
|
error("stow_contents() called with non-directory target: $target")
|
||||||
|
unless is_a_node($target);
|
||||||
|
|
||||||
opendir my $DIR, $path
|
opendir my $DIR, $path
|
||||||
or error("cannot read directory: $path");
|
or error("cannot read directory: $path");
|
||||||
|
@ -552,9 +553,11 @@ sub unstow_contents_orig {
|
||||||
my $cwd = getcwd();
|
my $cwd = getcwd();
|
||||||
debug(2, "Unstowing from $target (compat mode, cwd is $cwd)");
|
debug(2, "Unstowing from $target (compat mode, cwd is $cwd)");
|
||||||
debug(3, "--- source path is $path");
|
debug(3, "--- source path is $path");
|
||||||
if (not -d $target) {
|
# In compat mode we traverse the target tree not the source tree,
|
||||||
error("unstow_contents() called on a non-directory: $target");
|
# so we're unstowing the contents of /target/foo, there's no
|
||||||
}
|
# guarantee that the corresponding /stow/mypkg/foo exists.
|
||||||
|
error("unstow_contents_orig() called with non-directory target: $target")
|
||||||
|
unless -d $target;
|
||||||
|
|
||||||
opendir my $DIR, $target
|
opendir my $DIR, $target
|
||||||
or error("cannot read directory: $target");
|
or error("cannot read directory: $target");
|
||||||
|
@ -653,9 +656,11 @@ sub unstow_contents {
|
||||||
my $cwd = getcwd();
|
my $cwd = getcwd();
|
||||||
debug(2, "Unstowing from $target (cwd is $cwd)");
|
debug(2, "Unstowing from $target (cwd is $cwd)");
|
||||||
debug(3, "--- source path is $path");
|
debug(3, "--- source path is $path");
|
||||||
if (not -d $path) {
|
# We traverse the source tree not the target tree,
|
||||||
error("unstow_contents() called on a non-directory: $path");
|
error("unstow_contents() called with non-directory path: $path")
|
||||||
}
|
unless -d $path;
|
||||||
|
error("unstow_contents() called with non-directory target: $target")
|
||||||
|
unless is_a_node($target);
|
||||||
|
|
||||||
opendir my $DIR, $path
|
opendir my $DIR, $path
|
||||||
or error("cannot read directory: $path");
|
or error("cannot read directory: $path");
|
||||||
|
|
|
@ -57,7 +57,7 @@ $Option{'verbose'} = 0;
|
||||||
make_dir('../stow/pkg2/lib2');
|
make_dir('../stow/pkg2/lib2');
|
||||||
make_file('../stow/pkg2/lib2/file2');
|
make_file('../stow/pkg2/lib2/file2');
|
||||||
make_dir('lib2');
|
make_dir('lib2');
|
||||||
stow_contents('../stow/pkg2', './', '../stow/pkg2');
|
stow_contents('../stow/pkg2', '.', '../stow/pkg2');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
is(
|
is(
|
||||||
readlink('lib2/file2'),
|
readlink('lib2/file2'),
|
||||||
|
|
|
@ -43,7 +43,7 @@ make_dir('../stow/pkg1/bin1');
|
||||||
make_file('../stow/pkg1/bin1/file1');
|
make_file('../stow/pkg1/bin1/file1');
|
||||||
make_link('bin1','../stow/pkg1/bin1');
|
make_link('bin1','../stow/pkg1/bin1');
|
||||||
|
|
||||||
unstow_contents('../stow/pkg1','./');
|
unstow_contents('../stow/pkg1','.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -61,7 +61,7 @@ make_dir('lib2');
|
||||||
make_dir('../stow/pkg2/lib2');
|
make_dir('../stow/pkg2/lib2');
|
||||||
make_file('../stow/pkg2/lib2/file2');
|
make_file('../stow/pkg2/lib2/file2');
|
||||||
make_link('lib2/file2', '../../stow/pkg2/lib2/file2');
|
make_link('lib2/file2', '../../stow/pkg2/lib2/file2');
|
||||||
unstow_contents('../stow/pkg2','./');
|
unstow_contents('../stow/pkg2','.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -84,7 +84,7 @@ make_link('bin3/file3a' => '../../stow/pkg3a/bin3/file3a'); # emulate stow
|
||||||
make_dir('../stow/pkg3b/bin3');
|
make_dir('../stow/pkg3b/bin3');
|
||||||
make_file('../stow/pkg3b/bin3/file3b');
|
make_file('../stow/pkg3b/bin3/file3b');
|
||||||
make_link('bin3/file3b' => '../../stow/pkg3b/bin3/file3b'); # emulate stow
|
make_link('bin3/file3b' => '../../stow/pkg3b/bin3/file3b'); # emulate stow
|
||||||
unstow_contents('../stow/pkg3b', './');
|
unstow_contents('../stow/pkg3b', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -104,7 +104,7 @@ make_dir('../stow/pkg4/bin4');
|
||||||
make_file('../stow/pkg4/bin4/file4');
|
make_file('../stow/pkg4/bin4/file4');
|
||||||
make_link('bin4/file4', '../../stow/pkg4/bin4/does-not-exist');
|
make_link('bin4/file4', '../../stow/pkg4/bin4/does-not-exist');
|
||||||
|
|
||||||
unstow_contents('../stow/pkg4', './');
|
unstow_contents('../stow/pkg4', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -121,7 +121,7 @@ $Option{'verbose'} = 0;
|
||||||
make_dir('../stow/pkg5/bin5');
|
make_dir('../stow/pkg5/bin5');
|
||||||
make_link('bin5', '../not-stow');
|
make_link('bin5', '../not-stow');
|
||||||
|
|
||||||
unstow_contents('../stow/pkg5', './');
|
unstow_contents('../stow/pkg5', '.');
|
||||||
like(
|
like(
|
||||||
$Conflicts[-1], qr(CONFLICT:.*existing target is not owned by stow)
|
$Conflicts[-1], qr(CONFLICT:.*existing target is not owned by stow)
|
||||||
=> q(existing link not owned by stow)
|
=> q(existing link not owned by stow)
|
||||||
|
@ -140,7 +140,7 @@ make_link('bin6/file6', '../../stow/pkg6a/bin6/file6');
|
||||||
make_dir('../stow/pkg6b/bin6');
|
make_dir('../stow/pkg6b/bin6');
|
||||||
make_file('../stow/pkg6b/bin6/file6');
|
make_file('../stow/pkg6b/bin6/file6');
|
||||||
|
|
||||||
unstow_contents('../stow/pkg6b', './');
|
unstow_contents('../stow/pkg6b', '.');
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
-l 'bin6/file6' &&
|
-l 'bin6/file6' &&
|
||||||
|
@ -162,7 +162,7 @@ make_dir('stow/pkg7a/stow/pkg7b');
|
||||||
make_file('stow/pkg7a/stow/pkg7b/file7b');
|
make_file('stow/pkg7a/stow/pkg7b/file7b');
|
||||||
make_link('stow/pkg7b', '../stow/pkg7a/stow/pkg7b');
|
make_link('stow/pkg7b', '../stow/pkg7a/stow/pkg7b');
|
||||||
|
|
||||||
unstow_contents('stow/pkg7b', './');
|
unstow_contents('stow/pkg7b', '.');
|
||||||
stderr_like(
|
stderr_like(
|
||||||
sub { process_tasks(); },
|
sub { process_tasks(); },
|
||||||
qr/There are no outstanding operations to perform/,
|
qr/There are no outstanding operations to perform/,
|
||||||
|
@ -192,7 +192,7 @@ make_dir('stow/pkg8a/stow2/pkg8b');
|
||||||
make_file('stow/pkg8a/stow2/pkg8b/file8b');
|
make_file('stow/pkg8a/stow2/pkg8b/file8b');
|
||||||
make_link('stow2/pkg8b', '../stow/pkg8a/stow2/pkg8b');
|
make_link('stow2/pkg8b', '../stow/pkg8a/stow2/pkg8b');
|
||||||
|
|
||||||
unstow_contents('stow/pkg8a', './');
|
unstow_contents('stow/pkg8a', '.');
|
||||||
stderr_like(
|
stderr_like(
|
||||||
sub { process_tasks(); },
|
sub { process_tasks(); },
|
||||||
qr/There are no outstanding operations to perform/,
|
qr/There are no outstanding operations to perform/,
|
||||||
|
@ -220,7 +220,7 @@ make_link('man9/man1/file9.1' => '../../../stow/pkg9a/man9/man1/file9.1'); # emu
|
||||||
|
|
||||||
make_dir('../stow/pkg9b/man9/man1');
|
make_dir('../stow/pkg9b/man9/man1');
|
||||||
make_file('../stow/pkg9b/man9/man1/file9.1');
|
make_file('../stow/pkg9b/man9/man1/file9.1');
|
||||||
unstow_contents('../stow/pkg9b', './');
|
unstow_contents('../stow/pkg9b', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -248,7 +248,7 @@ make_link('man10/man1/file10b.1' => '../../../stow/pkg10b/man10/man1/file10b.1'
|
||||||
|
|
||||||
make_dir('../stow/pkg10c/man10/man1');
|
make_dir('../stow/pkg10c/man10/man1');
|
||||||
make_file('../stow/pkg10c/man10/man1/file10a.1');
|
make_file('../stow/pkg10c/man10/man1/file10a.1');
|
||||||
unstow_contents('../stow/pkg10c', './');
|
unstow_contents('../stow/pkg10c', '.');
|
||||||
stderr_like(
|
stderr_like(
|
||||||
sub { process_tasks(); },
|
sub { process_tasks(); },
|
||||||
qr/There are no outstanding operations to perform/,
|
qr/There are no outstanding operations to perform/,
|
||||||
|
@ -274,7 +274,7 @@ make_file('../stow/pkg12/man12/man1/.#file12.1');
|
||||||
make_dir('man12/man1');
|
make_dir('man12/man1');
|
||||||
make_link('man12/man1/file12.1' => '../../../stow/pkg12/man12/man1/file12.1');
|
make_link('man12/man1/file12.1' => '../../../stow/pkg12/man12/man1/file12.1');
|
||||||
|
|
||||||
unstow_contents('../stow/pkg12', './');
|
unstow_contents('../stow/pkg12', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
|
|
@ -43,7 +43,7 @@ make_dir('../stow/pkg1/bin1');
|
||||||
make_file('../stow/pkg1/bin1/file1');
|
make_file('../stow/pkg1/bin1/file1');
|
||||||
make_link('bin1','../stow/pkg1/bin1');
|
make_link('bin1','../stow/pkg1/bin1');
|
||||||
|
|
||||||
unstow_contents_orig('../stow/pkg1','./');
|
unstow_contents_orig('../stow/pkg1','.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -61,7 +61,7 @@ make_dir('lib2');
|
||||||
make_dir('../stow/pkg2/lib2');
|
make_dir('../stow/pkg2/lib2');
|
||||||
make_file('../stow/pkg2/lib2/file2');
|
make_file('../stow/pkg2/lib2/file2');
|
||||||
make_link('lib2/file2', '../../stow/pkg2/lib2/file2');
|
make_link('lib2/file2', '../../stow/pkg2/lib2/file2');
|
||||||
unstow_contents_orig('../stow/pkg2','./');
|
unstow_contents_orig('../stow/pkg2','.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -84,7 +84,7 @@ make_link('bin3/file3a' => '../../stow/pkg3a/bin3/file3a'); # emulate stow
|
||||||
make_dir('../stow/pkg3b/bin3');
|
make_dir('../stow/pkg3b/bin3');
|
||||||
make_file('../stow/pkg3b/bin3/file3b');
|
make_file('../stow/pkg3b/bin3/file3b');
|
||||||
make_link('bin3/file3b' => '../../stow/pkg3b/bin3/file3b'); # emulate stow
|
make_link('bin3/file3b' => '../../stow/pkg3b/bin3/file3b'); # emulate stow
|
||||||
unstow_contents_orig('../stow/pkg3b', './');
|
unstow_contents_orig('../stow/pkg3b', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -104,7 +104,7 @@ make_dir('../stow/pkg4/bin4');
|
||||||
make_file('../stow/pkg4/bin4/file4');
|
make_file('../stow/pkg4/bin4/file4');
|
||||||
make_link('bin4/file4', '../../stow/pkg4/bin4/does-not-exist');
|
make_link('bin4/file4', '../../stow/pkg4/bin4/does-not-exist');
|
||||||
|
|
||||||
unstow_contents_orig('../stow/pkg4', './');
|
unstow_contents_orig('../stow/pkg4', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -121,7 +121,7 @@ $Option{'verbose'} = 0;
|
||||||
make_dir('../stow/pkg5/bin5');
|
make_dir('../stow/pkg5/bin5');
|
||||||
make_link('bin5', '../not-stow');
|
make_link('bin5', '../not-stow');
|
||||||
|
|
||||||
unstow_contents_orig('../stow/pkg5', './');
|
unstow_contents_orig('../stow/pkg5', '.');
|
||||||
#like(
|
#like(
|
||||||
# $Conflicts[-1], qr(CONFLICT:.*can't unlink.*not owned by stow)
|
# $Conflicts[-1], qr(CONFLICT:.*can't unlink.*not owned by stow)
|
||||||
# => q(existing link not owned by stow)
|
# => q(existing link not owned by stow)
|
||||||
|
@ -144,7 +144,7 @@ make_link('bin6/file6', '../../stow/pkg6a/bin6/file6');
|
||||||
make_dir('../stow/pkg6b/bin6');
|
make_dir('../stow/pkg6b/bin6');
|
||||||
make_file('../stow/pkg6b/bin6/file6');
|
make_file('../stow/pkg6b/bin6/file6');
|
||||||
|
|
||||||
unstow_contents_orig('../stow/pkg6b', './');
|
unstow_contents_orig('../stow/pkg6b', '.');
|
||||||
ok(
|
ok(
|
||||||
-l 'bin6/file6' && readlink('bin6/file6') eq '../../stow/pkg6a/bin6/file6'
|
-l 'bin6/file6' && readlink('bin6/file6') eq '../../stow/pkg6a/bin6/file6'
|
||||||
=> q(existing link owned by stow but points to a different package)
|
=> q(existing link owned by stow but points to a different package)
|
||||||
|
@ -164,7 +164,7 @@ make_dir('stow/pkg7a/stow/pkg7b');
|
||||||
make_file('stow/pkg7a/stow/pkg7b/file7b');
|
make_file('stow/pkg7a/stow/pkg7b/file7b');
|
||||||
make_link('stow/pkg7b', '../stow/pkg7a/stow/pkg7b');
|
make_link('stow/pkg7b', '../stow/pkg7a/stow/pkg7b');
|
||||||
|
|
||||||
unstow_contents_orig('stow/pkg7b', './');
|
unstow_contents_orig('stow/pkg7b', '.');
|
||||||
stderr_like(
|
stderr_like(
|
||||||
sub { process_tasks(); },
|
sub { process_tasks(); },
|
||||||
qr/There are no outstanding operations to perform/,
|
qr/There are no outstanding operations to perform/,
|
||||||
|
@ -194,7 +194,7 @@ make_dir('stow/pkg8a/stow2/pkg8b');
|
||||||
make_file('stow/pkg8a/stow2/pkg8b/file8b');
|
make_file('stow/pkg8a/stow2/pkg8b/file8b');
|
||||||
make_link('stow2/pkg8b', '../stow/pkg8a/stow2/pkg8b');
|
make_link('stow2/pkg8b', '../stow/pkg8a/stow2/pkg8b');
|
||||||
|
|
||||||
unstow_contents_orig('stow/pkg8a', './');
|
unstow_contents_orig('stow/pkg8a', '.');
|
||||||
stderr_like(
|
stderr_like(
|
||||||
sub { process_tasks(); },
|
sub { process_tasks(); },
|
||||||
qr/There are no outstanding operations to perform/,
|
qr/There are no outstanding operations to perform/,
|
||||||
|
@ -222,7 +222,7 @@ make_link('man9/man1/file9.1' => '../../../stow/pkg9a/man9/man1/file9.1'); # emu
|
||||||
|
|
||||||
make_dir('../stow/pkg9b/man9/man1');
|
make_dir('../stow/pkg9b/man9/man1');
|
||||||
make_file('../stow/pkg9b/man9/man1/file9.1');
|
make_file('../stow/pkg9b/man9/man1/file9.1');
|
||||||
unstow_contents_orig('../stow/pkg9b', './');
|
unstow_contents_orig('../stow/pkg9b', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
@ -250,7 +250,7 @@ make_link('man10/man1/file10b.1' => '../../../stow/pkg10b/man10/man1/file10b.1'
|
||||||
|
|
||||||
make_dir('../stow/pkg10c/man10/man1');
|
make_dir('../stow/pkg10c/man10/man1');
|
||||||
make_file('../stow/pkg10c/man10/man1/file10a.1');
|
make_file('../stow/pkg10c/man10/man1/file10a.1');
|
||||||
unstow_contents_orig('../stow/pkg10c', './');
|
unstow_contents_orig('../stow/pkg10c', '.');
|
||||||
stderr_like(
|
stderr_like(
|
||||||
sub { process_tasks(); },
|
sub { process_tasks(); },
|
||||||
qr/There are no outstanding operations to perform/,
|
qr/There are no outstanding operations to perform/,
|
||||||
|
@ -276,7 +276,7 @@ make_file('../stow/pkg12/man12/man1/.#file12.1');
|
||||||
make_dir('man12/man1');
|
make_dir('man12/man1');
|
||||||
make_link('man12/man1/file12.1' => '../../../stow/pkg12/man12/man1/file12.1');
|
make_link('man12/man1/file12.1' => '../../../stow/pkg12/man12/man1/file12.1');
|
||||||
|
|
||||||
unstow_contents_orig('../stow/pkg12', './');
|
unstow_contents_orig('../stow/pkg12', '.');
|
||||||
process_tasks();
|
process_tasks();
|
||||||
ok(
|
ok(
|
||||||
scalar(@Conflicts) == 0 &&
|
scalar(@Conflicts) == 0 &&
|
||||||
|
|
Loading…
Reference in a new issue