The Perl Toolchain Summit 2025 Needs You: You can help 🙏 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);
BEGIN {
maybe_plan(4, 'YAML', 'Test::Differences');
}
my $in_yaml = qq{---
schema:
tables:
Person:
name: Person
fields:
first_name:
data_type: foovar
name: first_name
};
my $ans_yaml = qq{---
schema:
procedures: {}
tables:
person:
constraints: []
fields:
First_name:
data_type: foovar
default_value: ~
is_nullable: 1
is_primary_key: 0
is_unique: 0
name: First_name
order: 1
size:
- 0
indices: []
name: person
options: []
order: 1
triggers: {}
views: {}
translator:
add_drop_table: 0
filename: ~
no_comments: 0
parser_args: {}
parser_type: SQL::Translator::Parser::YAML
producer_args: {}
producer_type: SQL::Translator::Producer::YAML
show_warnings: 1
trace: 0
version: SUPPRESSED
};
# Parse the test schema
my $obj;
$obj = SQL::Translator->new(
debug => 0,
show_warnings => 1,
from => "YAML",
to => "YAML",
data => $in_yaml,
filters => [
# Filter from SQL::Translator::Filter::*
[
'Names',
{
tables => 'lc',
fields => 'ucfirst',
}
],
],
) or die "Failed to create translator object: " . SQL::Translator->error;
my $out;
lives_ok { $out = $obj->translate; } "Translate ran";
is $obj->error, '', "No errors";
ok $out ne "", "Produced something!";
# Somewhat hackishly modify the yaml with a regex to avoid
# failing randomly on every change of version.
$out =~ s/version: .*/version: SUPPRESSED/;
eq_or_diff $out, $ans_yaml, "Output looks right";