From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

#!/usr/bin/perl -w
# vim:filetype=perl
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
use strict;
use Test::SQL::Translator qw(maybe_plan);
use FindBin qw/$Bin/;
# Testing 1,2,3,4...
#=============================================================================
BEGIN {
maybe_plan(6,
'SQL::Translator::Parser::XML::SQLFairy',
'Template 2.20',
'Test::Differences'
);
}
# Main test. Template whole schema and test tt_vars
{
my $obj;
$obj = SQL::Translator->new(
show_warnings => 0,
from => "XML-SQLFairy",
filename => "$Bin/data/xml/schema.xml",
to => "TTSchema",
producer_args => {
ttfile => "$Bin/data/template/basic.tt",
tt_vars => {
foo => 'bar',
hello => 'world',
},
},
);
my $out;
lives_ok { $out = $obj->translate; } "Translate ran";
ok $out ne "" ,"Produced something!";
eq_or_diff
$out,
do { local (@ARGV, $/) = "$Bin/data/template/testresult_basic.txt"; <> },
"Output looks right"
;
}
# Test passing of Template config
{
my $tmpl = q{
[%- FOREACH table = schema.get_tables %]
Table: $table
[%- END %]};
my $obj;
$obj = SQL::Translator->new(
show_warnings => 0,
from => "XML-SQLFairy",
filename => "$Bin/data/xml/schema.xml",
to => "TTSchema",
producer_args => {
ttfile => \$tmpl,
tt_conf => {
INTERPOLATE => 1,
},
tt_vars => {
foo => 'bar',
hello => 'world',
},
},
);
my $out;
lives_ok { $out = $obj->translate; } "Translate ran";
ok $out ne "" ,"Produced something!";
local $/ = undef; # slurp
eq_or_diff $out, q{
Table: Basic
Table: Another}
,"Output looks right";
}