summaryrefslogtreecommitdiff
path: root/t/dh_install.t
blob: 48b153c210f9c93985ae23d1ddb0ef3a49f9467d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;

use File::Basename qw(dirname);
use lib dirname(__FILE__);
use Test::DH;

plan(tests => 12);

system("rm -rf debian/debhelper debian/tmp");

each_compat_from_and_above_subtest(7, sub {
    my ($compat) = @_;
    # #537140: debian/tmp is explcitly specified despite being searched by
    # default in v7+
    system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install debian/tmp/usr/bin/foo 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/foo", "#537140 [${compat}]");
    ok(! -e "debian/debhelper/usr/bin/bar", "#537140 [${compat}]");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_up_to_and_incl_subtest(6, sub {
    my ($compat) = @_;
    # debian/tmp explicitly specified in filenames in older compat level
    system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install debian/tmp/usr/bin/foo 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/foo");
    ok(!-e "debian/debhelper/usr/bin/bar");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_up_to_and_incl_subtest(6, sub {
    my ($compat) = @_;
    # --sourcedir=debian/tmp in older compat level
    system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install --sourcedir=debian/tmp usr/bin/foo 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/foo");
    ok(! -e "debian/debhelper/usr/bin/bar");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_from_and_above_subtest(7, sub {
    my ($compat) = @_;
    # redundant --sourcedir=debian/tmp in v7+
    system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install --sourcedir=debian/tmp usr/bin/foo 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/foo");
    ok(! -e "debian/debhelper/usr/bin/bar");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_subtest {
    my ($compat) = @_;
    # #537017: --sourcedir=debian/tmp/foo is used
    system("mkdir -p debian/tmp/foo/usr/bin; touch debian/tmp/foo/usr/bin/foo; touch debian/tmp/foo/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install --sourcedir=debian/tmp/foo usr/bin/bar 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/bar", "#537017 [${compat}]");
    ok(!-e "debian/debhelper/usr/bin/foo", "#537017 [${compat}]");
    system("rm -rf debian/debhelper debian/tmp");
};

each_compat_from_and_above_subtest(7, sub {
    my ($compat) = @_;
    # #535367: installation of entire top-level directory from debian/tmp
    system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install usr 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/foo", "#535367 [${compat}]");
    ok(-e "debian/debhelper/usr/bin/bar", "#535367 [${compat}]");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_from_and_above_subtest(7, sub {
    my ($compat) = @_;
    # #534565: fallback use of debian/tmp in v7+
    system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install usr/bin 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
    ok(-e "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_up_to_and_incl_subtest(6, sub {
    my ($compat) = @_;
    # no fallback to debian/tmp before v7
    system("mkdir -p debian/tmp/usr/bin; touch debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install usr/bin 2>/dev/null");
    ok(!-e "debian/debhelper/usr/bin/foo");
    ok(!-e "debian/debhelper/usr/bin/bar");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_from_and_above_subtest(7, sub {
    my ($compat) = @_;
    # #534565: glob expands to dangling symlink -> should install the dangling link
    system("mkdir -p debian/tmp/usr/bin; ln -s broken debian/tmp/usr/bin/foo; touch debian/tmp/usr/bin/bar");
    system("DH_COMPAT=${compat} dh_install 'usr/bin/*' 2>/dev/null");
    ok(-l "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
    ok(!-e "debian/debhelper/usr/bin/foo", "#534565 [${compat}]");
    ok(-e "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
    ok(!-l "debian/debhelper/usr/bin/bar", "#534565 [${compat}]");
    system("rm -rf debian/debhelper debian/tmp");
});

each_compat_subtest {
    my ($compat) = @_;
    # regular specification of file not in debian/tmp
    system("DH_COMPAT=${compat} dh_install dh_install usr/bin 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/dh_install");
    system("rm -rf debian/debhelper debian/tmp");
};

each_compat_subtest {
    my ($compat) = @_;
    # specification of file in source directory not in debian/tmp
    system("mkdir -p bar/usr/bin; touch bar/usr/bin/foo");
    system("DH_COMPAT=${compat} dh_install --sourcedir=bar usr/bin/foo 2>/dev/null");
    ok(-e "debian/debhelper/usr/bin/foo");
    system("rm -rf debian/debhelper bar");
};

each_compat_subtest {
    my ($compat) = @_;
    # specification of file in subdir, not in debian/tmp
    system("mkdir -p bar/usr/bin; touch bar/usr/bin/foo");
    system("DH_COMPAT=${compat} dh_install bar/usr/bin/foo 2>/dev/null");
    ok(-e "debian/debhelper/bar/usr/bin/foo");
    system("rm -rf debian/debhelper bar");
};

# Local Variables:
# indent-tabs-mode: t
# tab-width: 4
# cperl-indent-level: 4
# End: