X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F60roundtrip.t;h=e8182d5ea77bddd801bf16dd596cb9f9918392a1;hb=703171c1ddcc709d273395d6796f9fcb40671a02;hp=246d77981dce5be8201f412f282b15f379e53bf5;hpb=ecc147736f565116e517a19c6f78f9aebfdc8974;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/t/60roundtrip.t b/t/60roundtrip.t index 246d779..e8182d5 100644 --- a/t/60roundtrip.t +++ b/t/60roundtrip.t @@ -1,14 +1,12 @@ -#!/usr/bin/perl - use warnings; use strict; -use Test::More qw/no_plan/; +use Test::More; use Test::Exception; use Test::Differences; use FindBin qw/$Bin/; use SQL::Translator; -$Carp::Internal{'MooseX::Method::Signatures::Meta::Method'} = 1; + ### Set $ENV{SQLTTEST_RT_DEBUG} = 1 for more output # What tests to run - parser/producer name, and optional args @@ -20,33 +18,33 @@ my $plan = [ { engine => 'YAML', }, -# { -# engine => 'SQLite', -# producer_args => {}, -# parser_args => {}, -# }, -# { -# engine => 'MySQL', -# producer_args => {}, -# parser_args => {}, -# }, -# { -# engine => 'MySQL', -# name => 'MySQL 5.0', -# producer_args => { mysql_version => 5 }, -# parser_args => { mysql_parser_version => 5 }, -# }, -# { -# engine => 'MySQL', -# name => 'MySQL 5.1', -# producer_args => { mysql_version => '5.1' }, -# parser_args => { mysql_parser_version => '5.1' }, -# }, -# { -# engine => 'PostgreSQL', -# producer_args => {}, -# parser_args => {}, -# }, + { + engine => 'SQLite', + producer_args => {}, + parser_args => {}, + }, + { + engine => 'MySQL', + producer_args => {}, + parser_args => {}, + }, + { + engine => 'MySQL', + name => 'MySQL 5.0', + producer_args => { mysql_version => 5 }, + parser_args => { mysql_parser_version => 5 }, + }, + { + engine => 'MySQL', + name => 'MySQL 5.1', + producer_args => { mysql_version => '5.1' }, + parser_args => { mysql_parser_version => '5.1' }, + }, + { + engine => 'PostgreSQL', + producer_args => {}, + parser_args => {}, + }, # { # engine => 'SQLServer', # producer_args => {}, @@ -87,12 +85,12 @@ my $base_file = "$Bin/data/roundtrip_autogen.yaml"; open (my $base_fh, '<', $base_file) or die "$base_file: $!"; my $base_t = SQL::Translator->new; -#$base_t->$_ (1) for qw/add_drop_table no_comments/; +$base_t->$_(1) for qw/add_drop_table no_comments/; -my $base_schema = $base_t->translate ( +my $base_schema = $base_t->translate( parser => 'YAML', data => do { local $/; <$base_fh>; }, -) or die $base_t->error; +) or die $!; #assume there is at least one table my $string_re = { @@ -106,7 +104,7 @@ for my $args (@$plan) { $args->{name} ||= $args->{engine}; my @req = ref $args->{req} ? @{$args->{req}} : $args->{req}||(); - my @missing; + my @missing; for (@req) { eval "require $_"; push @missing, $_ if ($@); @@ -122,26 +120,23 @@ for my $args (@$plan) { local $TODO = $args->{todo} if $args->{todo}; lives_ok ( -# sub { check_roundtrip ($args, $base_schema) }, - sub { check_roundtrip ($args, $base_t, $base_schema) }, -# sub { check_roundtrip ($args, $base_schema) }, + sub { check_roundtrip ($args, $base_t) }, "Round trip for $args->{name} did not throw an exception", ); } } } - +done_testing; sub check_roundtrip { -# my ($args, $base_schema) = @_; -# my $base_t = $base_schema->translator; - my ($args, $base_t, $base_schema) = @_; + my ($args, $base_t) = @_; # create some output from the submitted schema - my $base_out = $base_t->translate ( - data => $base_schema, + + my $base_out = $base_t->translate( + data => $base_t->schema, producer => $args->{engine}, -# producer_args => $args->{producer_args}, + producer_args => $args->{producer_args} || {}, ); like ( @@ -149,22 +144,22 @@ sub check_roundtrip { $string_re->{$args->{engine}} || $string_re->{SQL}, "Received some meaningful output from the first $args->{name} production", ) or do { - diag ( _gen_diag ($base_t->error) ); + diag ( _gen_diag ($@) ); return; }; # parse the sql back - my $parser_t = SQL::Translator->new({ parser => 'YAML' }); - #$parser_t->$_ (1) for qw/add_drop_table no_comments/; + my $parser_t = SQL::Translator->new; + $parser_t->$_(1) for qw/add_drop_table no_comments/; my $mid_schema = $parser_t->translate ( data => $base_out, parser => $args->{engine}, -# parser_args => $args->{parser_args}, + parser_args => $args->{parser_args} || {}, ); -warn "MID SCHEMA FIRST (PRODUCED) BASE SCHEMA SECOND (PARSED)"; + isa_ok ($mid_schema, 'SQL::Translator::Object::Schema', "First $args->{name} parser pass produced a schema:") or do { - diag (_gen_diag ( $parser_t->error, $base_out ) ); + diag (_gen_diag ( $@, $base_out ) ); return; }; @@ -188,10 +183,10 @@ warn "MID SCHEMA FIRST (PRODUCED) BASE SCHEMA SECOND (PARSED)"; # producer_args => $args->{producer_args}, # ); - my $rt_out = $parser_t->translate ( + my $rt_out = $parser_t->translate( data => $mid_schema, producer => $args->{engine}, -# producer_args => $args->{producer_args}, + producer_args => $args->{producer_args} || {}, ); like ( @@ -199,7 +194,7 @@ warn "MID SCHEMA FIRST (PRODUCED) BASE SCHEMA SECOND (PARSED)"; $string_re->{$args->{engine}} || $string_re->{SQL}, "Received some meaningful output from the second $args->{name} production", ) or do { - diag ( _gen_diag ( $parser_t->error ) ); + diag ( _gen_diag ( $@ ) ); return; }; @@ -216,7 +211,7 @@ sub _get_table_info { my @info; - for my $t (@tables) { warn $t->name . "\t" . (join ', ', map { $_->name } $t->get_fields) . "\n"; + for my $t (@tables) { push @info, { name => $t->name, fields => [