Commit | Line | Data |
3c5dc866 |
1 | #!/usr/bin/perl |
2 | # vim: set ft=perl: |
8061d279 |
3 | # Test for Dumper producer |
3c5dc866 |
4 | |
5 | use strict; |
04c13c01 |
6 | use Config; |
04c13c01 |
7 | use File::Temp 'tempfile'; |
c401ac4b |
8 | use File::Spec; |
9 | use FindBin qw/$Bin/; |
10 | use IPC::Open3; |
3c5dc866 |
11 | use SQL::Translator; |
c401ac4b |
12 | use Test::More; |
3c5dc866 |
13 | use Test::SQL::Translator qw(maybe_plan); |
c401ac4b |
14 | use Symbol qw(gensym); |
3c5dc866 |
15 | |
16 | BEGIN { |
17 | maybe_plan( |
04c13c01 |
18 | 5, |
3c5dc866 |
19 | 'SQL::Translator::Parser::SQLite', |
20 | 'SQL::Translator::Producer::Dumper' |
21 | ); |
22 | } |
23 | |
04c13c01 |
24 | my $db_user = 'nomar'; |
25 | my $db_pass = 'gos0X!'; |
26 | my $dsn = 'dbi:SQLite:dbname=/tmp/foo'; |
3c5dc866 |
27 | my $file = "$Bin/data/sqlite/create.sql"; |
28 | my $t = SQL::Translator->new( |
29 | from => 'SQLite', |
30 | to => 'Dumper', |
31 | producer_args => { |
04c13c01 |
32 | skip => 'pet', |
33 | skiplike => '', |
3c5dc866 |
34 | db_user => $db_user, |
35 | db_password => $db_pass, |
36 | dsn => $dsn, |
37 | } |
38 | ); |
39 | |
40 | my $output = $t->translate( $file ); |
04c13c01 |
41 | |
42 | ok( $output, 'Got dumper script' ); |
43 | |
44 | my ( $fh, $filename ) = tempfile( 'XXXXXXXX' ); |
45 | |
46 | print $fh $output; |
8061d279 |
47 | close $fh or die "Can't close file '$filename': $!"; |
04c13c01 |
48 | |
49 | my $perl = $Config{'perlpath'}; |
c401ac4b |
50 | open( NULL, ">", File::Spec->devnull ); |
51 | my $pid = open3( gensym, ">&NULL", \*PH, "$perl -cw $filename" ); |
52 | my $res; |
53 | while( <PH> ) { $res .= $_; } |
54 | waitpid($pid, 0); |
55 | |
04c13c01 |
56 | like( $res, qr/syntax OK/, 'Generated script syntax is OK' ); |
57 | |
58 | like( $output, qr{DBI->connect\(\s*'$dsn',\s*'$db_user',\s*'$db_pass',}, |
59 | 'Script contains correct DSN, db user and password' ); |
60 | |
61 | like( $output, qr/table_name\s*=>\s*'person',/, 'Found "person" table' ); |
62 | unlike( $output, qr/table_name\s*=>\s*'pet',/, 'Skipped "pet" table' ); |
63 | |
64 | unlink $filename; |