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; |
3c5dc866 |
7 | use FindBin qw/$Bin/; |
8 | use Test::More; |
04c13c01 |
9 | use File::Temp 'tempfile'; |
3c5dc866 |
10 | use SQL::Translator; |
11 | use Test::SQL::Translator qw(maybe_plan); |
12 | |
13 | BEGIN { |
14 | maybe_plan( |
04c13c01 |
15 | 5, |
3c5dc866 |
16 | 'SQL::Translator::Parser::SQLite', |
17 | 'SQL::Translator::Producer::Dumper' |
18 | ); |
19 | } |
20 | |
04c13c01 |
21 | my $db_user = 'nomar'; |
22 | my $db_pass = 'gos0X!'; |
23 | my $dsn = 'dbi:SQLite:dbname=/tmp/foo'; |
3c5dc866 |
24 | my $file = "$Bin/data/sqlite/create.sql"; |
25 | my $t = SQL::Translator->new( |
26 | from => 'SQLite', |
27 | to => 'Dumper', |
28 | producer_args => { |
04c13c01 |
29 | skip => 'pet', |
30 | skiplike => '', |
3c5dc866 |
31 | db_user => $db_user, |
32 | db_password => $db_pass, |
33 | dsn => $dsn, |
34 | } |
35 | ); |
36 | |
37 | my $output = $t->translate( $file ); |
04c13c01 |
38 | |
39 | ok( $output, 'Got dumper script' ); |
40 | |
41 | my ( $fh, $filename ) = tempfile( 'XXXXXXXX' ); |
42 | |
43 | print $fh $output; |
8061d279 |
44 | close $fh or die "Can't close file '$filename': $!"; |
04c13c01 |
45 | |
46 | my $perl = $Config{'perlpath'}; |
47 | my $cmd = "$perl -cw $filename"; |
48 | my $res = `$cmd 2>&1`; |
49 | like( $res, qr/syntax OK/, 'Generated script syntax is OK' ); |
50 | |
51 | like( $output, qr{DBI->connect\(\s*'$dsn',\s*'$db_user',\s*'$db_pass',}, |
52 | 'Script contains correct DSN, db user and password' ); |
53 | |
54 | like( $output, qr/table_name\s*=>\s*'person',/, 'Found "person" table' ); |
55 | unlike( $output, qr/table_name\s*=>\s*'pet',/, 'Skipped "pet" table' ); |
56 | |
57 | unlink $filename; |