Release commit for 1.62
[dbsrgits/SQL-Translator.git] / t / 70sqlt-diff_script_old.t
CommitLineData
034bdbe4 1#!/usr/bin/perl
2# vim: set ft=perl:
3
4use strict;
5
6use File::Spec::Functions qw(catfile updir tmpdir);
7use FindBin qw($Bin);
8use Test::More;
ae99f367 9use IPC::Open3;
034bdbe4 10use Test::SQL::Translator qw(maybe_plan);
cb9bbc68 11use Text::ParseWords qw(shellwords);
034bdbe4 12
467b7282 13my @script = qw(script sqlt-diff-old);
034bdbe4 14my @create1 = qw(data sqlite create.sql);
15my @create2 = qw(data sqlite create2.sql);
16
467b7282 17my $sqlt_diff = catfile($Bin, updir, @script);
18my $create1 = catfile($Bin, @create1);
19my $create2 = catfile($Bin, @create2);
034bdbe4 20
21BEGIN {
da5a1bae 22 maybe_plan(21,
034bdbe4 23 'SQL::Translator::Parser::SQLite',
fb3e4caf 24 'SQL::Translator::Parser::MySQL',
32d8b258 25 'SQL::Translator::Parser::Oracle',
034bdbe4 26 );
27}
28
aee4b66e 29ok(-e $sqlt_diff, 'Found sqlt-diff script');
cb9bbc68 30my $out = _run_cmd ($sqlt_diff, "$create1=SQLite", "$create2=SQLite");
034bdbe4 31
bf459ae6 32like($out, qr/-- Target database SQLite is untested/, "Detected 'untested' comment");
034bdbe4 33like($out, qr/ALTER TABLE person CHANGE iq/, "Detected altered 'iq' field");
aee4b66e 34like($out, qr/ALTER TABLE person ADD is_rock_star/,
034bdbe4 35 "Detected missing rock star field");
aee4b66e 36
cb9bbc68 37$out = _run_cmd ($sqlt_diff, "$create1=SQLite", "$create1=SQLite");
fb3e4caf 38
da5a1bae 39like($out, qr/There were no differences/, "Properly detected no differences");
fb3e4caf 40
41my @mysql_create1 = qw(data mysql create.sql);
42my @mysql_create2 = qw(data mysql create2.sql);
43
44my $mysql_create1 = (-d "t")
45 ? catfile($Bin, @mysql_create1)
46 : catfile($Bin, "t", @mysql_create1);
47
48my $mysql_create2 = (-d "t")
49 ? catfile($Bin, @mysql_create2)
50 : catfile($Bin, "t", @mysql_create2);
51
d990d84b 52# Test for differences
cb9bbc68 53$out = _run_cmd ($sqlt_diff, "$mysql_create1=MySQL", "$mysql_create2=MySQL");
fb3e4caf 54
bf459ae6 55unlike($out, qr/-- Target database MySQL is untested/, "Did not detect 'untested' comment");
fb3e4caf 56like($out, qr/ALTER TABLE person CHANGE person_id/, "Detected altered 'person_id' field");
57like($out, qr/ALTER TABLE person CHANGE iq/, "Detected altered 'iq' field");
58like($out, qr/ALTER TABLE person CHANGE name/, "Detected altered 'name' field");
59like($out, qr/ALTER TABLE person CHANGE age/, "Detected altered 'age' field");
aee4b66e 60like($out, qr/ALTER TABLE person ADD is_rock_star/,
fb3e4caf 61 "Detected missing rock star field");
aee4b66e 62like($out, qr/ALTER TABLE person ADD UNIQUE UC_person_id/,
fb3e4caf 63 "Detected missing unique constraint");
aee4b66e 64like($out, qr/CREATE UNIQUE INDEX unique_name/,
d990d84b 65 "Detected unique index with different name");
aee4b66e 66like($out, qr/ALTER TABLE person ENGINE=InnoDB;/,
fb3e4caf 67 "Detected altered table option");
aee4b66e 68like($out, qr/ALTER TABLE employee DROP FOREIGN KEY FK5302D47D93FE702E/,
9ae898b9 69 "Detected drop foreign key");
aee4b66e 70like($out, qr/ALTER TABLE employee ADD CONSTRAINT FK5302D47D93FE702E_diff/,
9ae898b9 71 "Detected add constraint");
6a0f3000 72unlike($out, qr/ALTER TABLE employee ADD PRIMARY KEY/, "Primary key looks different when it shouldn't");
d990d84b 73
d990d84b 74# Test for sameness
cb9bbc68 75$out = _run_cmd ($sqlt_diff, "$mysql_create1=MySQL", "$mysql_create1=MySQL");
fb3e4caf 76
da5a1bae 77like($out, qr/There were no differences/, "Properly detected no differences");
32d8b258 78
79my @oracle_create1 = qw(data oracle create.sql);
80my @oracle_create2 = qw(data oracle create2.sql);
81
82my $oracle_create1 = (-d "t")
83 ? catfile($Bin, @oracle_create1)
84 : catfile($Bin, "t", @oracle_create1);
85
86my $oracle_create2 = (-d "t")
87 ? catfile($Bin, @oracle_create2)
88 : catfile($Bin, "t", @oracle_create2);
89
cb9bbc68 90$out = _run_cmd ($sqlt_diff, "$oracle_create1=Oracle", "$oracle_create2=Oracle");
32d8b258 91
bf459ae6 92unlike($out, qr/-- Target database Oracle is untested/, "Did not detect 'untested' comment");
aee4b66e 93like($out, qr/ALTER TABLE TABLE1 DROP FOREIGN KEY/,
32d8b258 94 "Detected drop foreign key");
aee4b66e 95like($out, qr/ALTER TABLE TABLE1 ADD CONSTRAINT/,
32d8b258 96 "Detected add constraint");
ae99f367 97
98sub _run_cmd {
99 my $out;
7e212236 100 my $pid = open3( undef, $out, undef, $^X, shellwords($ENV{HARNESS_PERL_SWITCHES}||''), @_ );
ae99f367 101 my $res = do { local $/; <$out> };
102 waitpid($pid, 0);
103 $res;
104}