summaryrefslogtreecommitdiff
path: root/dh_auto_test
blob: ea2d7fdc2c70b18c92a822d0cb5112beacf2fc9e (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
#!/usr/bin/perl -w

=head1 NAME

dh_auto_test - automatically runs a package's test suites

=cut

use strict;
use Debian::Debhelper::Dh_Lib;

=head1 SYNOPSIS

B<dh_auto_test> [S<I<debhelper options>>] [S<B<--> I<params>>]

=head1 DESCRIPTION

dh_auto_test is a debhelper program that tries to automatically run a
package's test suite. If there's a Makefile and it contains a "test"
or "check" target, then this is  done by running make (or MAKE, if the
environment variable is set). If the test suite fails, the command will
exit nonzero. If there's no test suite, it will exit zero without doing
anything.

This is intended to work for about 90% of packages with a test suite. If it
doesn't work, you're encouraged to skip using dh_auto_test at all, and
just run the test suite manually.

=head1 OPTIONS

=over 4

=item B<--> I<params>

Pass "params" to the program that is run. These can be used to supplement
or override the any standard parameters that dh_auto_test passes.

=back

=head1 NOTES

If the DEB_BUILD_OPTIONS environment variable contains "nocheck", no
tests will be performed.

=cut

init();

if (defined $ENV{DEB_BUILD_OPTIONS} && $ENV{DEB_BUILD_OPTIONS} =~ /nocheck/) {
	exit 0;
}

if (-e "Makefile" || -e "makefile" || -e "GNUmakefile") {
	$ENV{MAKE}="make" unless exists $ENV{MAKE};
	foreach my $target (qw{test check}) {
		# Use make -n to check to see if the target would do
		# anything. There's no good way to test if a target exists.
		my $ret=`$ENV{MAKE} -s -n $target 2>/dev/null`;
		chomp $ret;
		if (length $ret) {
			doit($ENV{MAKE}, $target, @{$dh{U_PARAMS}});
			last;
		}
	}
}
elsif (-e "Build.PL" && -e "Build") {
	$ENV{MODULEBUILDRC} = "/dev/null";
	doit(qw/perl Build test/, @{$dh{U_PARAMS}});
}

=head1 SEE ALSO

L<debhelper(7)>

This program is a part of debhelper.

=head1 AUTHOR

Joey Hess <joeyh@debian.org>

=cut