X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Build.PL;h=d5e0f769bf1230481fbb0a091438a7b5d034f1ad;hb=67e9b86f22e8dacf29904f0163be3b23fae91074;hp=d811d78627ce855eed897c1e3784a27194ca18d1;hpb=1dc5644241307a2cb95b8a0e64bba902603fe9bb;p=dbsrgits%2FDBM-Deep.git diff --git a/Build.PL b/Build.PL index d811d78..d5e0f76 100644 --- a/Build.PL +++ b/Build.PL @@ -1,8 +1,27 @@ use Module::Build; use strict; +use warnings FATAL => 'all'; -my $build = Module::Build->new( +my $class = Module::Build->subclass( + class => "Module::Build::Custom", + code => <<'SUBCLASS' ); + +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 + ); + } + if ( $self->notes( 'LONG_TESTS' ) ) { + $ENV{LONG_TESTS} = 1; + } + $self->SUPER::ACTION_test; +} +SUBCLASS + +my $build = $class->new( module_name => 'DBM::Deep', license => 'perl', requires => { @@ -11,10 +30,6 @@ my $build = Module::Build->new( 'Scalar::Util' => '1.14', 'Digest::MD5' => '1.00', }, - recommends => { - 'DBIx::Abstract' => '1.006', - 'Storable' => '2.21', - }, build_requires => { 'File::Path' => '0.01', 'File::Temp' => '0.01', @@ -30,6 +45,36 @@ my $build = Module::Build->new( 'META.yml', '*.bak', '*.gz', 'Makefile.PL', 'cover_db', ], test_files => 't/??_*.t', + auto_features => { + dbi_engine => { + description => 'DBI support (mysql only so far)', + 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( 'dbi_engine' ) ) { + if ( $build->y_n( "Run the tests against the DBI engine (for MySQL only)?", '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;