Commit | Line | Data |
1ded8513 |
1 | #!/usr/bin/perl -w |
2 | # vim:filetype=perl |
3 | |
4 | # |
5 | # Note that the bulk of the testing for the mysql producer is in |
6 | # 08postgres-to-mysql.t. This test is for additional stuff that can't be tested |
7 | # using an Oracle schema as source e.g. extra attributes. |
8 | # |
9 | |
10 | use strict; |
11 | use Test::More; |
12 | use Test::Exception; |
13 | use Test::SQL::Translator qw(maybe_plan); |
14 | |
15 | use Data::Dumper; |
16 | use FindBin qw/$Bin/; |
17 | |
18 | # Testing 1,2,3,4... |
19 | #============================================================================= |
20 | |
21 | BEGIN { |
22 | maybe_plan(2, |
23 | 'YAML', |
24 | 'SQL::Translator::Producer::MySQL', |
25 | 'Test::Differences', |
26 | ) |
27 | } |
28 | use Test::Differences; |
29 | use SQL::Translator; |
30 | |
31 | # Main test. |
32 | { |
33 | my $yaml_in = <<EOSCHEMA; |
34 | --- |
35 | schema: |
36 | tables: |
37 | thing: |
38 | name: thing |
39 | extra: |
40 | mysql_charset: latin1 |
41 | mysql_collate: latin1_danish_ci |
42 | order: 1 |
43 | fields: |
44 | name: |
45 | name: name |
46 | data_type: varchar |
47 | size: |
48 | - 32 |
49 | order: 1 |
50 | swedish_name: |
51 | name: swedish_name |
52 | data_type: varchar |
53 | size: 32 |
54 | extra: |
55 | mysql_charset: swe7 |
56 | order: 2 |
57 | description: |
58 | name: description |
59 | data_type: text |
60 | extra: |
61 | mysql_charset: utf8 |
62 | mysql_collate: utf8_general_ci |
63 | order: 3 |
64 | EOSCHEMA |
65 | |
66 | my $mysql_out = <<EOSQL; |
67 | SET foreign_key_checks=0; |
68 | |
69 | CREATE TABLE thing ( |
70 | name varchar(32), |
71 | swedish_name varchar(32) CHARACTER SET swe7, |
72 | description text CHARACTER SET utf8 COLLATE utf8_general_ci |
73 | ) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci; |
74 | |
75 | EOSQL |
76 | |
77 | my $sqlt; |
78 | $sqlt = SQL::Translator->new( |
79 | show_warnings => 1, |
80 | no_comments => 1, |
81 | from => "YAML", |
82 | to => "MySQL", |
83 | ); |
84 | |
85 | my $out; |
86 | $yaml_in = do { |
87 | local $/ = undef; |
88 | open(FILE, "/home/grommit/src/sqlfairy/test.yml") or die "$!"; |
89 | <FILE> |
90 | }; |
91 | $mysql_out = do { |
92 | local $/ = undef; |
93 | open(FILE, "/home/grommit/src/sqlfairy/test.sql") or die "$!"; |
94 | <FILE> |
95 | }; |
96 | |
97 | $out = $sqlt->translate(\$yaml_in) or die "Translate error:".$sqlt->error; |
98 | ok $out ne "" ,"Produced something!"; |
99 | eq_or_diff $out, $mysql_out ,"Output looks right"; |
100 | } |