It would be nice to also get coverage of the nano + DBI::PurePerl case.

Tim.

On Fri, May 07, 2010 at 02:18:46PM +0200, Jens Rehsack wrote:
> Hi,
> 
> as requested, I'd like to allow tests against SQL::Statement for those
> DBD's which support it, too.
> If no one has objections, I'd like to commit attached patch.
> 
> Best regards,
> Jens

> Index: lib/DBI/DBD.pm
> ===================================================================
> --- lib/DBI/DBD.pm    (revision 13946)
> +++ lib/DBI/DBD.pm    (working copy)
> @@ -3320,20 +3320,25 @@
>       if @_;
>      _inst_checks();
>  
> +    my %test_variants;
> +
>      # decide what needs doing
>  
>      # do whatever needs doing
>      if ($dbd_attr->{create_pp_tests}) {
>       # XXX need to convert this to work within the generated Makefile
>       # so 'make' creates them and 'make clean' deletes them
> -     my %test_variants = (
> +     %test_variants = (
>           p => {      name => "DBI::PurePerl",
> +                     match => qr/^\d/,
>                       add => [ '$ENV{DBI_PUREPERL} = 2' ],
>           },
>           g => {      name => "DBD::Gofer",
> +                     match => qr/^\d/,
>                       add => [ q{$ENV{DBI_AUTOPROXY} = 
> 'dbi:Gofer:transport=null;policy=pedantic'} ],
>           },
>           xgp => {    name => "PurePerl & Gofer",
> +                     match => qr/^\d/,
>                       add => [ q{$ENV{DBI_PUREPERL} = 2; $ENV{DBI_AUTOPROXY} 
> = 'dbi:Gofer:transport=null;policy=pedantic'} ],
>           },
>       #   mx => {     name => "DBD::Multiplex",
> @@ -3344,7 +3349,17 @@
>       #               add => [ q{local $ENV{DBI_AUTOPROXY} = 
> 'dbi:Proxy:XXX';} ],
>       #   }
>       );
> +    }
>  
> +    if ($dbd_attr->{create_nano_tests}) {
> +     $test_variants{n} = {
> +         name => "DBI::SQL::Nano",
> +         match => qr/^(50dbm|85gofer)\.t$/,
> +         add => [ q{$ENV{DBI_SQL_NANO} = 1; # force use of DBI::SQL::Nano} ],
> +     };
> +    }
> +
> +    if( 0 != scalar keys %test_variants ) {
>       opendir DIR, 't' or die "Can't read 't' directory: $!";
>       my @tests = grep { /\.t$/ } readdir DIR;
>       closedir DIR;
> @@ -3353,7 +3368,7 @@
>              printf "Creating test wrappers for $v_info->{name}:\n";
>  
>              foreach my $test (sort @tests) {
> -                next if $test !~ /^\d/;
> +                next if $test !~ $v_info->{match};
>                  my $usethr = ($test =~ /(\d+|\b)thr/ && $] >= 5.008 && 
> $Config{useithreads});
>                  my $v_test = "t/zv${v_type}_$test";
>                  my $v_perl = ($test =~ /taint/) ? "perl -wT" : "perl -w";
> Index: Makefile.PL
> ===================================================================
> --- Makefile.PL       (revision 13946)
> +++ Makefile.PL       (working copy)
> @@ -159,6 +159,7 @@
>  WriteMakefile(
>      dbd_edit_mm_attribs(\%opts, {
>       create_pp_tests => 1,
> +     create_nano_tests => 1,
>      })
>  );
>  # WriteMakefile call is last thing executed
> Index: t/85gofer.t
> ===================================================================
> --- t/85gofer.t       (revision 13946)
> +++ t/85gofer.t       (working copy)
> @@ -22,7 +22,8 @@
>  
>  # 0=SQL::Statement if avail, 1=DBI::SQL::Nano
>  # next line forces use of Nano rather than default behaviour
> -$ENV{DBI_SQL_NANO}=1;
> +# $ENV{DBI_SQL_NANO}=1;
> +# This is done in zvn_50dbm.t
>  
>  GetOptions(
>      'c|count=i' => \(my $opt_count = (-t STDOUT ? 100 : 0)),
> Index: t/50dbm.t
> ===================================================================
> --- t/50dbm.t (revision 13946)
> +++ t/50dbm.t (working copy)
> @@ -21,7 +21,8 @@
>  
>      # 0=SQL::Statement if avail, 1=DBI::SQL::Nano
>      # next line forces use of Nano rather than default behaviour
> -    $ENV{DBI_SQL_NANO}=1;
> +    # $ENV{DBI_SQL_NANO}=1;
> +    # This is done in zvn_50dbm.t
>  
>      push @mldbm_types, '';
>      if (eval { require 'MLDBM.pm'; }) {
> @@ -155,14 +156,15 @@
>              5 => '15',
>          } if $mldbm;
>  
> -     print " $sql\n";
> +     print " $sql ...";
>          $sql =~ s/\s*;\s*(?:#(.*))//;
>          my $comment = $1;
>  
>          my $sth = $dbh->prepare($sql) or die $dbh->errstr;
>          my @bind;
>          @bind = split /,/, $comment if $sth->{NUM_OF_PARAMS};
> -        $sth->execute(@bind);
> +        my $n = $sth->execute(@bind);
> +     print " $n\n";
>          die $sth->errstr if $sth->err and $sql !~ /DROP/;
>  
>          next unless $sql =~ /SELECT/;
> @@ -187,8 +189,8 @@
>  INSERT INTO  fruit VALUES (3, NULL       );
>  INSERT INTO  fruit VALUES (4,'to delete' );
>  INSERT INTO  fruit VALUES (?,?); #5,via placeholders
> +DELETE FROM  fruit WHERE dVal='to delete';
>  UPDATE fruit SET dVal='apples' WHERE dKey=2;
> -DELETE FROM  fruit WHERE dVal='to delete';
>  SELECT * FROM fruit;
>  DROP TABLE fruit;
>  

Reply via email to