X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F31dumper.t;h=96401ca7f6d280f7ff230d4ef3532d0ebebeaf16;hb=cb9bbc68fe26aa563d28d590221f6a0235b4062e;hp=de39d5d150bdf6e2c2698d9e43070c8cd69a4a40;hpb=8061d279dc11d524e283db82e15002ab7df839f0;p=dbsrgits%2FSQL-Translator.git diff --git a/t/31dumper.t b/t/31dumper.t index de39d5d..96401ca 100644 --- a/t/31dumper.t +++ b/t/31dumper.t @@ -3,16 +3,19 @@ # Test for Dumper producer use strict; -use Config; -use FindBin qw/$Bin/; -use Test::More; use File::Temp 'tempfile'; +use FindBin qw/$Bin/; +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( - 5, + 5, + 'DBI', 'SQL::Translator::Parser::SQLite', 'SQL::Translator::Producer::Dumper' ); @@ -35,23 +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 $perl = $Config{'perlpath'}; -my $cmd = "$perl -cw $filename"; -my $res = `$cmd 2>&1`; -like( $res, qr/syntax OK/, 'Generated script syntax is OK' ); +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( $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' ); +like( $res, qr/syntax OK/, 'Generated script syntax is OK' ); unlink $filename;