my $verbose;
my $nodc;
my $make_opts = "";
+my $regen_only;
GetOptions("t|test=s" => \@tests,
"m=s" => \$make_opts,
"n" => \$nodc,
- "v" => \$verbose)
+ "v" => \$verbose,
+ "r" => \$regen_only)
or die;
-my $make = $Config{make};
-# if there's a way to make with profiling for a recursive build like
-# Imager I don't see how
-if (-f 'Makefile') {
- run("$make clean");
-}
-run("cover -delete");
-run("perl Makefile.PL --coverage @ARGV")
- and die "Makefile.PL failed\n";
-run("$make $make_opts 'OTHERLDFLAGS=-ftest-coverage -fprofile-arcs'")
- and die "build failed\n";
+my $do_build = !$regen_only;
+if ($do_build) {
+ my $make = $Config{make};
+ # if there's a way to make with profiling for a recursive build like
+ # Imager I don't see how
+ if (-f 'Makefile') {
+ run("$make clean");
+ }
+ run("cover -delete");
+ run("perl Makefile.PL --coverage @ARGV")
+ and die "Makefile.PL failed\n";
+ run("$make $make_opts 'OTHERLDFLAGS=-ftest-coverage -fprofile-arcs'")
+ and die "build failed\n";
-{
- local $ENV{DEVEL_COVER_OPTIONS} = "-db," . getcwd() . "/cover_db,-coverage,statement,branch,condition,subroutine";
- my $makecmd = "$make test TEST_VERBOSE=1";
- $makecmd .= " HARNESS_PERL_SWITCHES=-MDevel::Cover" unless $nodc;
- if (@tests) {
- $makecmd .= " TEST_FILES='@tests'";
+ {
+ local $ENV{DEVEL_COVER_OPTIONS} = "-db," . getcwd() . "/cover_db,-coverage,statement,branch,condition,subroutine";
+ my $makecmd = "$make test";
+ $makecmd .= " TEST_VERBOSE=1" if $verbose;
+ $makecmd .= " HARNESS_PERL_SWITCHES=-MDevel::Cover" unless $nodc;
+ if (@tests) {
+ $makecmd .= " TEST_FILES='@tests'";
+ }
+ run($makecmd)
+ and die "Test failed\n";
}
- run($makecmd)
- and die "Test failed\n";
}
# build gcov files
print "Running: $cmd\n" if $verbose;
return system $cmd;
}
+
+=head1 NAME
+
+imcover.perl - perform C and perl coverage testing for Imager
+
+=head1 SYNOPSIS
+
+ perl imcover.perl [-m=...][-t=...][-n][-v][-r] -- ... Makefile.PL options
+
+=head1 DESCRIPTION
+
+Builds Imager with the C< -ftest-coverage -fprofile-arcs > gcc options
+and then runs perl's tests.
+
+=cut