File Coverage

File:t/moving-to-existing-subdir.t
Coverage:96.7%

linestmtbrancondsubpodtimecode
1#!/usr/bin/perl -wl
2
3
1
1
1
7392
80475
175
use Test::More;
4
1
1
1
4331
48957
436
use Test::Differences;
5
1
1
1
18
5
186
use File::Path qw(mkpath rmtree);
6
1
1
1
969
48528
340
use File::Slurp;
7
1
1
1
1135
4741
263
use File::Which;
8
1
1
1
1669
19976
661509
use Data::Dumper;
9
10
1
13
my $BASE = 't/moving-to-existing-subdir';
11
1
15
my $HOME = "$BASE/home";
12
1
15
my $TARGET = "$BASE/target";
13
1
11
my $PREFIX = "u";
14
15# Set a debug environment
16
1
20
$ENV{HOME} = $HOME;
17
1
16
$ENV{LANG} = 'C';
18
19# Clean up possible remainders of aborted tests
20
1
531
rmtree("$BASE");
21
22
1
2381
ok( mkpath("$HOME/.foobar/fnord", "$HOME/.foobar/gnarz",
23           "$TARGET/$PREFIX-foobar-gnarz", {}), "Create test environment (directories)" );
24
1
3257
ok( -d "$HOME/.foobar/fnord", "Original directory has been created" );
25
1
1697
ok( -d "$TARGET", "Target directory has been created" );
26
27
1
2547
ok( write_file("$HOME/.foobar/fnord/bla", "123\n"), "Create file 1" );
28
1
3336
ok( write_file("$HOME/.foobar/gnarz/goo", "456\n"), "Create file 2" );
29
1
2265
ok( write_file("$HOME/.foobar/foo", "abc\n"), "Create file 3" );
30
31
1
3682
ok( write_file("$BASE/list", "m d .foobar/fnord foobar-fnord\nm d .foobar/gnarz foobar-gnarz\nm f .foobar/foo foobar-foo\n"), "Create list" );
32
1
3116
ok( write_file("$BASE/config", "TARGETDIR=$TARGET\nFILELAYOUT=$PREFIX-\%s"), "Create config" );
33
34
1
3061
my $cmd = "bin/unburden-home-dir -C $BASE/config -L $BASE/list > $BASE/output 2> $BASE/stderr";
35
1
3742054
ok( system($cmd) == 0, "Call '$cmd'" );
36
37
1
1439
my $wanted = "";
38
1
69
unless (which('lsof')) {
39
0
0
    $wanted = "WARNING: lsof not found, not checking for files in use.\n".$wanted;
40}
41
42
1
1624
my $stderr = read_file("$BASE/stderr");
43
1
555
unified_diff;
44
1
100
eq_or_diff_text( $stderr, $wanted, "Check command STDERR output (should be empty)" );
45
46
1
1671
$wanted = "Moving $HOME/.foobar/fnord -> $TARGET/u-foobar-fnord
47sending incremental file list
48created directory $TARGET/u-foobar-fnord
49./
50bla
51Symlinking $TARGET/u-foobar-fnord -> $HOME/.foobar/fnord
52Moving $HOME/.foobar/gnarz -> $TARGET/u-foobar-gnarz
53sending incremental file list
54goo
55Symlinking $TARGET/u-foobar-gnarz -> $HOME/.foobar/gnarz
56Moving $HOME/.foobar/foo -> $TARGET/u-foobar-foo
57'$HOME/.foobar/foo' -> '$TARGET/u-foobar-foo'
58Symlinking $TARGET/u-foobar-foo -> $HOME/.foobar/foo
59";
60
61
1
71
my $output = read_file("$BASE/output");
62
63# Somewhere between coreutils 8.13 (until Wheezy/Quantal), and 8.20
64# (from Jessie/Raring on) the quoting characters in verbose output of
65# mv. changed. $wanted contains the newer style. In case this test
66# runs with older version of coreutils, we change the output to look
67# like the one from the newer versions.
68
1
326
$output =~ s/\`/\'/g;
69
70
1
65
eq_or_diff_text( $output, $wanted, "Check command STDOUT" );
71
72
1
1617
ok( -d "$TARGET/$PREFIX-foobar-fnord", "First directory moved" );
73
1
1316
ok( -d "$TARGET/$PREFIX-foobar-gnarz", "Second directory moved" );
74
1
1183
ok( -f "$TARGET/$PREFIX-foobar-fnord/bla", "File 1 moved" );
75
1
1173
ok( -f "$TARGET/$PREFIX-foobar-gnarz/goo", "File 2 moved" );
76
1
1284
ok( -f "$TARGET/$PREFIX-foobar-foo", "File 3 moved" );
77
78
1
6724
ok( rmtree("$BASE"), "Clean up" );
79
80
1
1036
done_testing();