DBI::Test - how to match/skip test variants

Jens Rehsack <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
Hi all,

I currently stuck hacking on matching test cases for deriving
test variants. Think as reason about DBI's test cases like
redo'ing all tests using DBI::PurePerl - but only some through
Gofer proxy and a handful with built-in DBI::SQL::Nano vs.
SQL::Statement (when having SQL::Statement)...

Other reason is to run DBI::Test self-test through the bundled
DBI::Mock and through DBI (default attributes test etc.).

Here is a roughly config set:

(
     default => {
                  category   => "mock",
                  cat_abbrev => "m",
                  abbrev     => "b",
                  init_stub  => qq(\$ENV{DBI_MOCK} = 1;),
                  match      => { namespace => [""], },
                  name       => "Unmodified Test",
                },
     # next stuff might be moved to DBI::Test::DBI::Conf
     dbi_pp => {
                 category   => "dbi",
                 cat_abbrev => "z",
                 abbrev     => "p", # use DBI::PurePerl
                 init_stub  => qq(\$ENV{DBI_PUREPERL}=1;),
                 match      => "...",
                 name       => "DBI PurePerl",
               },
     dbi_gofer => {
                    category   => "dbi",
                    cat_abbrev => "z",
                    abbrev     => "g", # use DBI::PurePerl
                    init_stub  => qq(\$ENV{DBI_GOFER ...}=1;),
                    match      => "...",
                    name       => "DBI PurePerl",
                  },
     # next stuff might be moved to DBI::Test::SQL::Statement::Conf
     sql_nano => {
         category  => "sql::statement / dbi",
	cat_abbrev => "s",
         abbrev    => "n",
         init_stub => qq(\$ENV{DBI_SQL_NANO}=1;),
         match     => {
                    general    => qq(\$ENV{DBI.pm} =~ m|/|),
                    name_space => [qw(DBI)], # DBD::CVS might hook here ...
                    name       => "...",
                  },
         name => "using DBI SQL::Nano",
                 },
            );

The keys of the config hash are intended for hooking from additional
distributions (DBD::CSV, DBD::Sys, DBD::ODBC ...) and hack some flags
from configuration files.

Why is reducing test variants important? Because size matters! With
12 test variants, we'll create up to 2^12 (2 for DBI::Test, 4 for DBI,
optionally DBI::Proxy and/or DBD::Multiplex, up to 4 on SQL::Statement)
combinations of each test. When Test::Database introduce some more
variants - we'll might have 15, and I'm pretty sure, the count will
grow quickly. Running the 150 basic test cases of DBI::Test, DBI and
SQL::Statement in addition to those of DBD::CSV when instaling DBD::CSV,
there will be 819200 test run. That might take some time, even when
they can be parallelized ...

We also have to think about opening a door for Test::Database features
like creating DSN's for testing (DBD::DBM and DBD::CSV currently use
competing (and of course) incompatible own code for that.

While this is discussed and hopefully some cute little ideas follow,
I will work on extracting the plugin namespace (DBI::Test(.*)::Conf) ;)

Cheers
-- 
Jens Rehsack
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.