use strict; use Test::More tests => 27; use Wiki::Toolkit; use Wiki::Toolkit::TestConfig; use DBI; foreach my $dbtype (qw( MySQL Pg SQLite )) { SKIP: { skip "$dbtype backend not configured", 8 unless $Wiki::Toolkit::TestConfig::config{$dbtype}->{dbname}; my %config = %{$Wiki::Toolkit::TestConfig::config{$dbtype}}; my $setup_class = "Wiki::Toolkit::Setup::$dbtype"; eval "require $setup_class"; my $store_class = "Wiki::Toolkit::Store::$dbtype"; eval "require $store_class"; { no strict 'refs'; my $dsn = $store_class->_dsn( $config{dbname}, $config{dbhost} ); foreach my $method ( qw( cleardb setup ) ) { eval { &{$setup_class . "::" . $method}( @config{ qw( dbname dbuser dbpass dbhost ) } ); }; is( $@, "", "${setup_class}::$method doesn't die when called with connection details list"); eval { &{$setup_class . "::" . $method}( \% config ); }; is( $@, "", "${setup_class}::$method doesn't die when called with connection details hashref"); eval { my $dbh = DBI->connect($dsn, @config{ qw( dbuser dbpass )}, { PrintError => 0, RaiseError => 1, AutoCommit => 1 } ) or die DBI->errstr; &{$setup_class . "::" . $method}( $dbh ); $dbh->disconnect; }; is( $@, "", "${setup_class}::$method doesn't die when called with dbh"); eval { my $dbh = DBI->connect($dsn, @config{ qw( dbuser dbpass )}, { PrintError => 0, RaiseError => 1, AutoCommit => 1 } ) or die DBI->errstr; &{$setup_class . "::" . $method}( { dbh => $dbh } ); $dbh->disconnect; }; is( $@, "", "${setup_class}::$method doesn't die when called with dbh in hashref"); } } } } SKIP: { skip "SQLite backend not configured", 3 unless $Wiki::Toolkit::TestConfig::config{SQLite}; my @mistakes = ; is( scalar @mistakes, 0, "Wiki::Toolkit::Setup::SQLite doesn't create erroneous files called things like 'HASH(0x80fd394)'" ); @mistakes = ; is( scalar @mistakes, 0, "Wiki::Toolkit::Setup::SQLite doesn't create erroneous files called things like 'ARRAY(0x83563fc)'" ); @mistakes = <4*>; is( scalar @mistakes, 0, "Wiki::Toolkit::Setup::SQLite doesn't create erroneous files called '4'" ); }