App-Build

 view release on metacpan or  search on metacpan

t/lib/TestAppBuild.pm  view on Meta::CPAN

package TestAppBuild;

use strict;
use base qw(Exporter);

use File::Path qw();
use Fatal qw(chdir open);
use Test::Differences;
use File::Find;
use ExtUtils::Command qw();
use File::Spec;
use Module::Build::ConfigData;
use Config;

our @EXPORT = qw(run_build_pl run_build clean_install check_tree
                 set_module_dir touch_file if_has_html if_has_man %Config);

my $module_dir = 'Call set_module_dir()';
my $support_executable_bit = 0;
my $support_html =    Module::Build::ConfigData->feature( 'HTML_support' )
                   && $Config{installhtmldir};
my $support_man = Module::Build::ConfigData->feature( 'manpage_support' )
                  && $Config{man3ext};

sub if_has_html { $support_html ? @_ : () }
sub if_has_man  { $support_man  ? @_ : () }

sub set_module_dir {
    $module_dir = $_[0];
}

sub clean_install {
    File::Path::rmtree( 't/test_install' );
    File::Path::rmtree( 't/Foo/blib' );
    File::Path::rmtree( 'archive' );
    File::Path::rmtree( 'unpack' );
    File::Path::mkpath( 't/test_install' );

    open my $fh, '>', 't/test_install/is_x';
    return if -x 't/test_install/is_x';
    chmod 0777, 't/test_install/is_x';
    return unless -x 't/test_install/is_x';
    $support_executable_bit = 1;
}

sub _run {
    my( $cmd, @args ) = @_;
    my $sw = $ENV{HARNESS_PERL_SWITCHES} || '';
    if( $sw ) {
        $sw =~ s{-MDevel::Cover}{-MDevel::Cover=-silent,1,-db,../../cover_db};
    }
    # warn "$^X -Mblib=../../blib $sw $cmd @args";
    qx"$^X -Mblib=../../blib $sw $cmd @args";
}

sub run_build_pl {
    my( @args ) = @_;
    local $ENV{PERL_MB_OPT};
    chdir $module_dir;
    _run( 'Build.PL', @args );
    chdir '../..';
}

sub run_build {
    my( @args ) = @_;
    local $ENV{PERL_MB_OPT};
    chdir $module_dir;
    _run( 'Build', @args );



( run in 1.842 second using v1.01-cache-2.11-cpan-39bf76dae61 )