X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fdeploy_methods%2Fsql_translator.t;h=f7a7cf2768a9b4532dc380c4d294cc9a95338d6f;hb=91adde755e5808a1ec12bcf00e683e3754964cc9;hp=5eeb3deb59267160cfbeff7f2810169d0a9ea896;hpb=d50f25217d0b10029e1fb5ea140eb5547df67592;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/t/deploy_methods/sql_translator.t b/t/deploy_methods/sql_translator.t index 5eeb3de..f7a7cf2 100644 --- a/t/deploy_methods/sql_translator.t +++ b/t/deploy_methods/sql_translator.t @@ -20,19 +20,29 @@ VERSION1: { my $s = DBICVersion::Schema->connect(@connection); my $dm = Translator->new({ schema => $s, - upgrade_directory => $sql_dir, + script_directory => $sql_dir, databases => ['SQLite'], - sqltargs => { add_drop_table => 0 }, + sql_translator_args => { add_drop_table => 0 }, }); ok( $dm, 'DBIC::DH::DM::SQL::Translator gets instantiated correctly' ); - $dm->prepare_install; + $dm->prepare_deploy; + + mkpath(catfile(qw( t sql SQLite preinstall 1.0 ))); + open my $prerun, '>', + catfile(qw( t sql SQLite preinstall 1.0 003-semiautomatic.pl )); + print {$prerun} "sub {use File::Touch; touch(q(foobar));}"; + close $prerun; + $dm->preinstall({ version => '1.0' }); + + ok -e 'foobar'; + { my $warned = 0; local $SIG{__WARN__} = sub{$warned = 1}; - $dm->prepare_install; - ok( $warned, 'prepare_install warns if you run it twice' ); + $dm->prepare_deploy; + ok( $warned, 'prepare_deploy warns if you run it twice' ); } mkpath(catfile(qw( t sql _common schema 1.0 ))); open my $common, '>', @@ -52,14 +62,14 @@ VERSION1: { } 'schema not deployed'; mkpath catfile(qw( t sql _common schema 1.0 )); - open my $common, '>', + open $common, '>', catfile(qw( t sql _common schema 1.0 001-auto.sql )); print {$common} qq; close $common; { my $warned = 0; local $SIG{__WARN__} = sub{$warned = 1}; - $dm->_deploy; + $dm->deploy; ok( $warned, 'deploy warns on sql errors' ); } @@ -75,26 +85,35 @@ VERSION2: { my $s = DBICVersion::Schema->connect(@connection); my $dm = Translator->new({ schema => $s, - upgrade_directory => $sql_dir, + script_directory => $sql_dir, databases => ['SQLite'], - sqltargs => { add_drop_table => 0 }, + sql_translator_args => { add_drop_table => 0 }, + txn_wrap => 1, }); ok( $dm, 'DBIC::DH::SQL::Translator w/2.0 instantiates correctly'); $version = $s->schema_version(); - $dm->prepare_install(); + $dm->prepare_deploy; ok( -f catfile(qw( t sql SQLite schema 2.0 001-auto.sql )), '2.0 schema gets generated properly' ); mkpath(catfile(qw( t sql SQLite up 1.0-2.0 ))); - $dm->prepare_upgrade; + $dm->prepare_upgrade({ + from_version => '1.0', + to_version => '2.0', + version_set => [qw(1.0 2.0)] + }); { my $warned = 0; local $SIG{__WARN__} = sub{$warned = 1}; - $dm->prepare_upgrade('0.0', '1.0'); + $dm->prepare_upgrade({ + from_version => '0.0', + to_version => '1.0', + version_set => [qw(0.0 1.0)] + }); ok( $warned, 'prepare_upgrade with a bogus preversion warns' ); } ok( @@ -102,7 +121,11 @@ VERSION2: { '1.0-2.0 diff gets generated properly and default start and end versions get set' ); mkpath(catfile(qw( t sql SQLite down 2.0-1.0 ))); - $dm->prepare_downgrade($version, '1.0'); + $dm->prepare_downgrade({ + from_version => $version, + to_version => '1.0', + version_set => [$version, '1.0'] + }); ok( -f catfile(qw( t sql SQLite down 2.0-1.0 001-auto.sql )), '2.0-1.0 diff gets generated properly' @@ -126,25 +149,42 @@ VERSION2: { print {$common} qq; close $common; - $dm->_upgrade_single_step([qw( 1.0 2.0 )]); + open my $common_pl, '>', + catfile(qw( t sql _common up 1.0-2.0 003-semiautomatic.pl )); + print {$common_pl} q| + sub { + my $schema = shift; + $schema->resultset('Foo')->create({ + bar => 'goodbye', + baz => 'blue skies', + }) + } + |; + close $common_pl; + + $dm->upgrade_single_step({ version_set => [qw( 1.0 2.0 )] }); is( $s->resultset('Foo')->search({ bar => 'hello', baz => 'world', })->count, 1, '_common migration got run'); + is( $s->resultset('Foo')->search({ + bar => 'goodbye', + #baz => 'blue skies', + })->count, 1, '_common perl migration got run'); lives_ok { $s->resultset('Foo')->create({ bar => 'frew', baz => 'frew', }) } 'schema is deployed'; - $dm->_downgrade_single_step([qw( 2.0 1.0 )]); + $dm->downgrade_single_step({ version_set => [qw( 2.0 1.0 )] }); dies_ok { $s->resultset('Foo')->create({ bar => 'frew', baz => 'frew', }) - } 'schema is downpgrayyed'; - $dm->_upgrade_single_step([qw( 1.0 2.0 )]); + } 'schema is downgrayyed'; + $dm->upgrade_single_step({ version_set => [qw( 1.0 2.0 )] }); } VERSION3: { @@ -152,35 +192,51 @@ VERSION3: { my $s = DBICVersion::Schema->connect(@connection); my $dm = Translator->new({ schema => $s, - upgrade_directory => $sql_dir, + script_directory => $sql_dir, databases => ['SQLite'], - sqltargs => { add_drop_table => 0 }, + sql_translator_args => { add_drop_table => 0 }, txn_wrap => 0, }); ok( $dm, 'DBIC::DH::SQL::Translator w/3.0 instantiates correctly'); $version = $s->schema_version(); - $dm->prepare_install; + $dm->prepare_deploy; ok( -f catfile(qw( t sql SQLite schema 3.0 001-auto.sql )), '2.0 schema gets generated properly' ); - $dm->prepare_downgrade($version, '1.0'); + $dm->prepare_downgrade({ + from_version => $version, + to_version => '1.0', + version_set => [$version, '1.0'] + }); ok( -f catfile(qw( t sql SQLite down 3.0-1.0 001-auto.sql )), '3.0-1.0 diff gets generated properly' ); - $dm->prepare_upgrade( '1.0', $version, ['1.0', $version] ); + $dm->prepare_upgrade({ + from_version => '1.0', + to_version => $version, + version_set => ['1.0', $version] + }); ok( -f catfile(qw( t sql SQLite up 1.0-3.0 001-auto.sql )), '1.0-3.0 diff gets generated properly' ); - $dm->prepare_upgrade( '2.0', $version ); + $dm->prepare_upgrade({ + from_version => '2.0', + to_version => $version, + version_set => ['2.0', $version] + }); { my $warned = 0; local $SIG{__WARN__} = sub{$warned = 1}; - $dm->prepare_upgrade( '2.0', $version ); + $dm->prepare_upgrade({ + from_version => '2.0', + to_version => $version, + version_set => ['2.0', $version] + }); ok( $warned, 'prepare_upgrade warns if you clobber an existing upgrade file' ); } ok( @@ -198,7 +254,7 @@ VERSION3: { biff => 'frew', }) } 'schema not deployed'; - $dm->_upgrade_single_step([qw( 2.0 3.0 )]); + $dm->upgrade_single_step({ version_set => [qw( 2.0 3.0 )] }); lives_ok { $s->resultset('Foo')->create({ bar => 'frew', @@ -209,7 +265,7 @@ VERSION3: { rmtree(catfile(qw( t sql SQLite ))); rmtree(catfile(qw( t sql _generic ))); dies_ok { - $dm->_upgrade_single_step([qw( 2.0 3.0 )]); + $dm->upgrade_single_step({ version_set => [qw( 2.0 3.0 )] }); } 'dies when sql dir does not exist'; } done_testing;