X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F99dbic_sqlt_parser.t;h=4d1ddac4b5924e875ad0fb3b1c352e5461c6a797;hb=d2bc7045e78e5bc547e32133e48d2f994d158491;hp=313d2a60101bb3879ab001dc4df8bff85e6d5909;hpb=d6c322f814d460638a9b4c36c5d41da5fbeafcbf;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/99dbic_sqlt_parser.t b/t/99dbic_sqlt_parser.t index 313d2a6..4d1ddac 100644 --- a/t/99dbic_sqlt_parser.t +++ b/t/99dbic_sqlt_parser.t @@ -1,10 +1,12 @@ -#!/usr/bin/perl use strict; use warnings; + use Test::More; use Test::Exception; use lib qw(t/lib); use DBICTest; +use DBICTest::Schema; +use Scalar::Util (); BEGIN { require DBIx::Class::Storage::DBI; @@ -13,10 +15,20 @@ BEGIN { if not DBIx::Class::Storage::DBI->_sqlt_version_ok; } +# Test for SQLT-related leaks +{ + my $s = DBICTest::Schema->clone; + create_schema ({ schema => $s }); + Scalar::Util::weaken ($s); + + ok (!$s, 'Schema not leaked'); +} + + my $schema = DBICTest->init_schema(); # Dummy was yanked out by the sqlt hook test # CustomSql tests the horrific/deprecated ->name(\$sql) hack -# YearXXXXCDs and NoViewDefinition are views +# YearXXXXCDs are views # my @sources = grep { $_ !~ /^ (?: Dummy | CustomSql | Year\d{4}CDs ) $/x } @@ -24,43 +36,43 @@ my @sources = grep ; { - my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { } } }); + my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { } } }); - foreach my $source (@sources) { - my $table = get_table($sqlt_schema, $schema, $source); + foreach my $source (@sources) { + my $table = get_table($sqlt_schema, $schema, $source); - my $fk_count = scalar(grep { $_->type eq 'FOREIGN KEY' } $table->get_constraints); - my @indices = $table->get_indices; - my $index_count = scalar(@indices); + my $fk_count = scalar(grep { $_->type eq 'FOREIGN KEY' } $table->get_constraints); + my @indices = $table->get_indices; + my $index_count = scalar(@indices); $index_count++ if ($source eq 'TwoKeys'); # TwoKeys has the index turned off on the rel def - is($index_count, $fk_count, "correct number of indices for $source with no args"); - } + is($index_count, $fk_count, "correct number of indices for $source with no args"); + } } { - my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { add_fk_index => 1 } } }); + my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { add_fk_index => 1 } } }); - foreach my $source (@sources) { - my $table = get_table($sqlt_schema, $schema, $source); + foreach my $source (@sources) { + my $table = get_table($sqlt_schema, $schema, $source); - my $fk_count = scalar(grep { $_->type eq 'FOREIGN KEY' } $table->get_constraints); - my @indices = $table->get_indices; - my $index_count = scalar(@indices); + my $fk_count = scalar(grep { $_->type eq 'FOREIGN KEY' } $table->get_constraints); + my @indices = $table->get_indices; + my $index_count = scalar(@indices); $index_count++ if ($source eq 'TwoKeys'); # TwoKeys has the index turned off on the rel def - is($index_count, $fk_count, "correct number of indices for $source with add_fk_index => 1"); - } + is($index_count, $fk_count, "correct number of indices for $source with add_fk_index => 1"); + } } { - my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { add_fk_index => 0 } } }); + my $sqlt_schema = create_schema({ schema => $schema, args => { parser_args => { add_fk_index => 0 } } }); - foreach my $source (@sources) { - my $table = get_table($sqlt_schema, $schema, $source); + foreach my $source (@sources) { + my $table = get_table($sqlt_schema, $schema, $source); - my @indices = $table->get_indices; - my $index_count = scalar(@indices); - is($index_count, 0, "correct number of indices for $source with add_fk_index => 0"); - } + my @indices = $table->get_indices; + my $index_count = scalar(@indices); + is($index_count, 0, "correct number of indices for $source with add_fk_index => 0"); + } } { @@ -84,25 +96,43 @@ my @sources = grep 'parser detects views with a view_definition'; } +lives_ok (sub { + my $sqlt_schema = create_schema ({ + schema => $schema, + args => { + parser_args => { + sources => ['CD'] + }, + }, + }); + + is_deeply ( + [$sqlt_schema->get_tables ], + ['cd'], + 'sources limitng with relationships works', + ); + +}); + done_testing; sub create_schema { - my $args = shift; + my $args = shift; - my $schema = $args->{schema}; - my $additional_sqltargs = $args->{args} || {}; + my $schema = $args->{schema}; + my $additional_sqltargs = $args->{args} || {}; - my $sqltargs = { - add_drop_table => 1, - ignore_constraint_names => 1, - ignore_index_names => 1, - %{$additional_sqltargs} - }; + my $sqltargs = { + add_drop_table => 1, + ignore_constraint_names => 1, + ignore_index_names => 1, + %{$additional_sqltargs} + }; - my $sqlt = SQL::Translator->new( $sqltargs ); + my $sqlt = SQL::Translator->new( $sqltargs ); - $sqlt->parser('SQL::Translator::Parser::DBIx::Class'); - return $sqlt->translate({ data => $schema }) || die $sqlt->error; + $sqlt->parser('SQL::Translator::Parser::DBIx::Class'); + return $sqlt->translate({ data => $schema }) || die $sqlt->error; } sub get_table {