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