X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Build.PL;h=e691c3f2dcdf80c068c58553366e0860fde5e052;hb=24b0b7b9c405df7f75babe1e6ebd48680c9853a5;hp=3f769a14148b03f19af9f4a1d9dc73a125ae0c7d;hpb=a8ee1892e98cea35cbf63bddd1a34d5849e3ca03;p=dbsrgits%2FDBM-Deep.git diff --git a/Build.PL b/Build.PL index 3f769a1..e691c3f 100644 --- a/Build.PL +++ b/Build.PL @@ -1,9 +1,10 @@ -use Module::Build 0.28; # prepare_metadata +use Module::Build 0.28; # for prepare_metadata use strict; +use warnings FATAL => 'all'; my $build = Module::Build->subclass( - class => 'Any::Thing', + class => "Module::Build::Custom", code => ' sub prepare_metadata { my $node = shift->SUPER::prepare_metadata(@_); @@ -11,7 +12,21 @@ my $build = Module::Build->subclass( $_->{version} = $ver for values %{$node->{provides}}; $node; } - ', + + sub ACTION_test { + my $self = shift; + if ( $self->notes(\'TEST_MYSQL_DSN\') ) { + $ENV{$_} = $self->notes($_) for qw( + TEST_MYSQL_DSN TEST_MYSQL_USER TEST_MYSQL_PASS + ); + } + foreach my $name ( qw( LONG_TESTS TEST_SQLITE ) ) { + $ENV{$name} = 1 if $self->notes( $name ); + } + + $self->SUPER::ACTION_test( @_ ); + } + ', )->new( module_name => 'DBM::Deep', license => 'perl', @@ -25,6 +40,7 @@ my $build = Module::Build->subclass( 'File::Path' => '0.01', 'File::Temp' => '0.01', 'Pod::Usage' => '1.3', + 'Test::More' => '0.88', 'Test::Deep' => '0.095', 'Test::Warn' => '0.08', 'Test::More' => '0.88', # done_testing @@ -36,6 +52,49 @@ my $build = Module::Build->subclass( 'META.yml', '*.bak', '*.gz', 'Makefile.PL', 'cover_db', ], test_files => 't/??_*.t', + auto_features => { + sqlite_engine => { + description => 'DBI support via SQLite', + requires => { + 'DBI' => '1.5', + 'DBD::SQLite' => '1.25', + }, + }, + mysql_engine => { + description => 'DBI support via MySQL', + requires => { + 'DBI' => '1.5', + 'DBD::mysql' => '4.001', + }, + }, + }, ); +if ( $build->y_n( "Run the long-running tests", 'n' ) ) { + $build->notes( 'LONG_TESTS' => 1 ); +} + +if ( $build->features( 'sqlite_engine' ) ) { + if ( $build->y_n( "Run the tests against the DBI engine via SQLite?", 'n' ) ) { + $build->notes( 'TEST_SQLITE' => 1 ); + } +} + +if ( $build->features( 'mysql_engine' ) ) { + if ( $build->y_n( "Run the tests against the DBI engine via MySQL?", 'n' ) ) { + my ($dsn, $user, $pass) = ('') x 3; + $dsn = $build->prompt( "\tWhat is the full DSN (for example 'dbi:mysql:test')" ); + if ( $dsn ) { + $user = $build->prompt( "\tWhat is the username?" ); + if ( $user ) { + $pass = $build->prompt( "\tWhat is the password?" ); + } + } + + $build->notes( 'TEST_MYSQL_DSN' => $dsn ); + $build->notes( 'TEST_MYSQL_USER' => $user ); + $build->notes( 'TEST_MYSQL_PASS' => $pass ); + } +} + $build->create_build_script;