summaryrefslogtreecommitdiff
path: root/t/dh_missing/dh_missing.t
blob: 8d87f77b301f4887673dc7dfc2740bb87b1b1522 (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
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;

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

our @TEST_DH_EXTRA_TEMPLATE_FILES = (qw(
    debian/changelog
    debian/control
    debian/foo.install
    file-for-foo
    Makefile
));

plan(tests => 3);

each_compat_subtest {
	# Verify dh_missing does not fail when all files are installed.
	ok(run_dh_tool('dh_clean'));
	is(system('make', 'install'), 0);
	ok(run_dh_tool('dh_install', '--sourcedir', 'debian/tmp'));
	ok(run_dh_tool('dh_missing', '--fail-missing'), 'dh_missing failed');
};

each_compat_subtest {
	# Verify dh_missing does fail when not all files are installed.
	ok(run_dh_tool('dh_clean'));
	is(system('make', 'installmore'), 0);
	ok(run_dh_tool('dh_install', '--sourcedir', 'debian/tmp'));
	ok(!run_dh_tool({ 'quiet' => 1 }, 'dh_missing', '--fail-missing'));

	isnt($?, -1, 'dh_missing was executed');
	ok(! ($? & 127), 'dh_missing did not die due to a signal');
	my $exitcode = ($? >> 8);
	is($exitcode, 2, 'dh_missing exited with exit code 2');
};

each_compat_up_to_and_incl_subtest(10, sub {
	# Verify that dh_install -X --fail-missing is passed through to dh_missing (#863447)
	# dh_install -Xfile makes file-for-foo not be installed. Then we shouldn't
	# complain about it not being missing.
	ok(run_dh_tool('dh_clean'));
	is(system('make', 'install'), 0);
	ok(run_dh_tool({ 'quiet' => 1 }, 'dh_install', '--sourcedir', 'debian/tmp',
				   '-X', 'more', '--exclude', 'lots', '--fail-missing'));
});

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