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

Reply via email to