1package Test::Run::Builder;
2
3use strict;
4use warnings;
5
6use Module::Build;
7
8use vars qw(@ISA);
9
10@ISA = (qw(Module::Build));
11
12sub ACTION_runtest
13{
14    my ($self) = @_;
15    my $p = $self->{properties};
16
17    $self->depends_on('code');
18
19    local @INC = @INC;
20
21    # Make sure we test the module in blib/
22    unshift @INC, (File::Spec->catdir($p->{base_dir}, $self->blib, 'lib'),
23         File::Spec->catdir($p->{base_dir}, $self->blib, 'arch'));
24
25    $self->do_test_run_tests;
26}
27
28sub ACTION_distruntest {
29  my ($self) = @_;
30
31  $self->depends_on('distdir');
32
33  my $start_dir = $self->cwd;
34  my $dist_dir = $self->dist_dir;
35  chdir $dist_dir or die "Cannot chdir to $dist_dir: $!";
36  # XXX could be different names for scripts
37
38  $self->run_perl_script('Build.PL') # XXX Should this be run w/ --nouse-rcfile
39      or die "Error executing 'Build.PL' in dist directory: $!";
40  $self->run_perl_script('Build')
41      or die "Error executing 'Build' in dist directory: $!";
42  $self->run_perl_script('Build', [], ['runtest'])
43      or die "Error executing 'Build test' in dist directory";
44  chdir $start_dir;
45}
46
47sub do_test_run_tests
48{
49    my $self = shift;
50
51    require Test::Run::CmdLine::Iface;
52
53    my $test_run =
54        Test::Run::CmdLine::Iface->new(
55            {
56                'test_files' => [glob("t/*.t")],
57            }
58            # 'backend_params' => $self->_get_backend_params(),
59        );
60
61    return $test_run->run();
62}
63
64sub ACTION_tags
65{
66    my $self = shift;
67    return
68        $self->do_system(
69            "ctags",
70            qw(-f tags --recurse --totals
71            --exclude=blib/** --exclude=t/lib/**
72            --exclude=**/.svn/** --exclude='*~'),
73            "--exclude=".$self->dist_name()."-*/**",
74            qw(--languages=Perl --langmap=Perl:+.t)
75        );
76}
77
781;
79
80