X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F71mysql.t;h=45650a597deb483139214449220ebb5fe6c0cad2;hb=4f29a592f18106f2b06660a1cb82911b0ebc2011;hp=2e54352923b4fd77735b05d4a769841e2ea66f77;hpb=2c2bc4e58c2146670960fc1a0a2ae802cb650506;p=dbsrgits%2FDBIx-Class.git diff --git a/t/71mysql.t b/t/71mysql.t index 2e54352..45650a5 100644 --- a/t/71mysql.t +++ b/t/71mysql.t @@ -1,3 +1,5 @@ +use DBIx::Class::Optional::Dependencies -skip_all_without => 'test_rdbms_mysql'; + use strict; use warnings; @@ -12,15 +14,9 @@ use DBIx::Class::Optional::Dependencies (); use lib qw(t/lib); use DBICTest; -plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_rdbms_mysql') - unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_rdbms_mysql'); - my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MYSQL_${_}" } qw/DSN USER PASS/}; -plan skip_all => 'Set $ENV{DBICTEST_MYSQL_DSN}, _USER and _PASS to run this test' - unless ($dsn && $user); - -my $schema = DBICTest->connect_schema($dsn, $user, $pass, { quote_names => 1 }); +my $schema = DBICTest::Schema->connect($dsn, $user, $pass, { quote_names => 1 }); my $dbh = $schema->storage->dbh; @@ -52,7 +48,7 @@ $dbh->do("CREATE TABLE books (id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, so # make sure sqlt_type overrides work (::Storage::DBI::mysql does this) { - my $schema = DBICTest->connect_schema($dsn, $user, $pass); + my $schema = DBICTest::Schema->connect($dsn, $user, $pass); ok (!$schema->storage->_dbh, 'definitely not connected'); is ($schema->storage->sqlt_type, 'MySQL', 'sqlt_type correct pre-connection'); @@ -100,30 +96,35 @@ lives_ok { }); } 'LOCK IN SHARE MODE select works'; +my ($int_type_name, @undef_default) = DBIx::Class::_ENV_::STRESSTEST_COLUMN_INFO_UNAWARE_STORAGE + ? ('integer') + : ( 'INT', default_value => undef ) +; + my $test_type_info = { 'artistid' => { - 'data_type' => 'INT', + 'data_type' => $int_type_name, 'is_nullable' => 0, 'size' => 11, - 'default_value' => undef, + @undef_default, }, 'name' => { 'data_type' => 'VARCHAR', 'is_nullable' => 1, 'size' => 100, - 'default_value' => undef, + @undef_default, }, 'rank' => { - 'data_type' => 'INT', + 'data_type' => $int_type_name, 'is_nullable' => 0, 'size' => 11, - 'default_value' => 13, + DBIx::Class::_ENV_::STRESSTEST_COLUMN_INFO_UNAWARE_STORAGE ? () : ( 'default_value' => '13' ), }, 'charfield' => { 'data_type' => 'CHAR', 'is_nullable' => 1, 'size' => 10, - 'default_value' => undef, + @undef_default, }, }; @@ -178,6 +179,10 @@ SKIP: { $test_type_info->{charfield}->{data_type} = 'VARCHAR'; } + if (DBIx::Class::_ENV_::STRESSTEST_COLUMN_INFO_UNAWARE_STORAGE) { + $_->{data_type} = lc $_->{data_type} for values %$test_type_info; + } + my $type_info = $schema->storage->columns_info_for('artist'); is_deeply($type_info, $test_type_info, 'columns_info_for - column data types'); } @@ -209,7 +214,7 @@ lives_ok { $cd->set_producers ([ $producer ]) } 'set_relationship doesnt die'; # with it (ribasushi, 2009/07/03) NULLINSEARCH: { - my $ansi_schema = DBICTest->connect_schema ($dsn, $user, $pass, { on_connect_call => 'set_strict_mode' }); + my $ansi_schema = DBICTest::Schema->connect ($dsn, $user, $pass, { on_connect_call => 'set_strict_mode' }); $ansi_schema->resultset('Artist')->create ({ name => 'last created artist' }); @@ -233,7 +238,7 @@ NULLINSEARCH: { # check for proper grouped counts { - my $ansi_schema = DBICTest->connect_schema ($dsn, $user, $pass, { + my $ansi_schema = DBICTest::Schema->connect ($dsn, $user, $pass, { on_connect_call => 'set_strict_mode', quote_char => '`', }); @@ -363,7 +368,7 @@ ZEROINSEARCH: { # make sure find hooks determine driver { - my $schema = DBICTest->connect_schema($dsn, $user, $pass); + my $schema = DBICTest::Schema->connect($dsn, $user, $pass); $schema->resultset("Artist")->find(4); isa_ok($schema->storage->sql_maker, 'DBIx::Class::SQLMaker::MySQL'); } @@ -371,13 +376,13 @@ ZEROINSEARCH: { # make sure the mysql_auto_reconnect buggery is avoided { local $ENV{MOD_PERL} = 'boogiewoogie'; - my $schema = DBICTest->connect_schema($dsn, $user, $pass); + my $schema = DBICTest::Schema->connect($dsn, $user, $pass); ok (! $schema->storage->_get_dbh->{mysql_auto_reconnect}, 'mysql_auto_reconnect unset regardless of ENV' ); # Make sure hardcore forking action still works even if mysql_auto_reconnect # is true (test inspired by ether) - my $schema_autorecon = DBICTest->connect_schema($dsn, $user, $pass, { mysql_auto_reconnect => 1 }); + my $schema_autorecon = DBICTest::Schema->connect($dsn, $user, $pass, { mysql_auto_reconnect => 1 }); my $orig_dbh = $schema_autorecon->storage->_get_dbh; weaken $orig_dbh;