X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F31dumper.t;h=927c82d200d57d5c6313142a20035948fcf4860c;hb=9055d33a95fe33d4f1dab84b45c104d9375f2cd7;hp=ac2df91bc5a589d610ae8bbda15e7eb5c6b0615b;hpb=3c5dc866414973dfc7f3dd4ca1bc5b2c2731575e;p=dbsrgits%2FSQL-Translator.git diff --git a/t/31dumper.t b/t/31dumper.t index ac2df91..927c82d 100644 --- a/t/31dumper.t +++ b/t/31dumper.t @@ -1,28 +1,36 @@ #!/usr/bin/perl # vim: set ft=perl: -# +# Test for Dumper producer use strict; +use File::Temp 'tempfile'; use FindBin qw/$Bin/; -use Test::More; +use IPC::Open3; use SQL::Translator; +use Test::More; use Test::SQL::Translator qw(maybe_plan); +use Symbol qw(gensym); +use Text::ParseWords qw(shellwords); BEGIN { maybe_plan( - 1, + 5, + 'DBI', 'SQL::Translator::Parser::SQLite', 'SQL::Translator::Producer::Dumper' ); } +my $db_user = 'nomar'; +my $db_pass = 'gos0X!'; +my $dsn = 'dbi:SQLite:dbname=/tmp/foo'; my $file = "$Bin/data/sqlite/create.sql"; my $t = SQL::Translator->new( from => 'SQLite', to => 'Dumper', producer_args => { - skip => $skip, - skiplike => $skiplike, + skip => 'pet', + skiplike => '', db_user => $db_user, db_password => $db_pass, dsn => $dsn, @@ -30,3 +38,24 @@ my $t = SQL::Translator->new( ); my $output = $t->translate( $file ); +ok( $output, 'Got dumper script' ); + +like( $output, qr{DBI->connect\(\s*'$dsn',\s*'$db_user',\s*'$db_pass',}, + 'Script contains correct DSN, db user and password' ); + +like( $output, qr/table_name\s*=>\s*'person',/, 'Found "person" table' ); +unlike( $output, qr/table_name\s*=>\s*'pet',/, 'Skipped "pet" table' ); + +my ( $fh, $filename ) = tempfile( 'XXXXXXXX' ); + +print $fh $output; +close $fh or die "Can't close file '$filename': $!"; + +my $out; +my $pid = open3( undef, $out, undef, $^X, shellwords($ENV{HARNESS_PERL_SWITCHES}||''), '-cw', $filename ); +my $res = do { local $/; <$out> }; +waitpid($pid, 0); + +like( $res, qr/syntax OK/, 'Generated script syntax is OK' ); + +unlink $filename;