Apply some changes
[dbsrgits/DBM-Deep.git] / Build.PL
index d5e0f76..02a2d47 100644 (file)
--- a/Build.PL
+++ b/Build.PL
@@ -1,27 +1,33 @@
-use Module::Build;
+use Module::Build 0.28; # for prepare_metadata
 
 use strict;
 use warnings FATAL => 'all';
 
-my $class = Module::Build->subclass(
+my $build = Module::Build->subclass(
     class => "Module::Build::Custom",
-    code => <<'SUBCLASS' );
+    code => '
+        sub prepare_metadata {
+            my $node = shift->SUPER::prepare_metadata(@_);
+            my $ver = $node->{version};
+            $_->{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
-        );
-    }
-    if ( $self->notes( 'LONG_TESTS' ) ) {
-        $ENV{LONG_TESTS} = 1;
-    }
-    $self->SUPER::ACTION_test;
-}
-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
+                );
+            }
+            foreach my $name ( qw( LONG_TESTS TEST_SQLITE ) ) {
+                $ENV{$name} = 1 if $self->notes( $name );
+            }
 
-my $build = $class->new(
+            $self->SUPER::ACTION_test( @_ );
+        }
+    ',
+)->new(
     module_name => 'DBM::Deep',
     license => 'perl',
     requires => {
@@ -46,8 +52,15 @@ my $build = $class->new(
     ],
     test_files => 't/??_*.t',
     auto_features => {
-        dbi_engine => {
-            description => 'DBI support (mysql only so far)',
+        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',
@@ -60,8 +73,14 @@ 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' ) ) {
+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 ) {