#!perl
use strict;
use warnings;
use Test::More;
use Test::Differences;
use Cwd qw(getcwd chdir);
use English qw(-no_match_vars $CHILD_ERROR);
$ENV{AUTHOR_TESTING}
or plan skip_all => 'Set $ENV{AUTHOR_TESTING} to run this test.';
my @data = (
{
test => '11_little_endian',
path => 'example',
script => '-I../lib -T 11_little_endian.pl',
result => <<'EOT',
$messages_result = [
{
msgid => '',
msgstr => 'MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Plural-Forms: nplurals=2; plural=n != 1;
'
},
{
msgctxt => 'c_context',
msgid => 'c_o_singular',
msgid_plural => 'c_o_plural',
msgstr_plural => [
'c_t_singular',
'c_t_plural'
]
},
{
msgctxt => 'context',
msgid => 'c_original',
msgstr => 'c_translated'
},
{
msgid => 'o_singular',
msgid_plural => 'o_plural',
msgstr_plural => [
't_singular',
't_plural'
]
},
{
msgid => 'original',
msgstr => 'translated'
}
];
EOT
},
{
test => '12_little_endian_fh',
path => 'example',
script => '-I../lib -T 12_little_endian_fh.pl',
result => <<'EOT',
$messages_result = [
{
msgid => '',
msgstr => 'MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Plural-Forms: nplurals=2; plural=n != 1;
'
},
{
msgctxt => 'c_context',
msgid => 'c_o_singular',
msgid_plural => 'c_o_plural',
msgstr_plural => [
'c_t_singular',
'c_t_plural'
]
},
{
msgctxt => 'context',
msgid => 'c_original',
msgstr => 'c_translated'
},
{
msgid => 'o_singular',
msgid_plural => 'o_plural',
msgstr_plural => [
't_singular',
't_plural'
]
},
{
msgid => 'original',
msgstr => 'translated'
}
];
EOT
},
{
test => '21_big_endian',
path => 'example',
script => '-I../lib -T 21_big_endian.pl',
result => <<'EOT',
$messages_result = [
{
msgid => '',
msgstr => 'MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Plural-Forms: nplurals=2; plural=n != 1;
'
},
{
msgctxt => 'c_context',
msgid => 'c_o_singular',
msgid_plural => 'c_o_plural',
msgstr_plural => [
'c_t_singular',
'c_t_plural'
]
},
{
msgctxt => 'context',
msgid => 'c_original',
msgstr => 'c_translated'
},
{
msgid => 'o_singular',
msgid_plural => 'o_plural',
msgstr_plural => [
't_singular',
't_plural'
]
},
{
msgid => 'original',
msgstr => 'translated'
}
];
EOT
},
{
test => '22_big_endian_fh',
path => 'example',
script => '-I../lib -T 22_big_endian_fh.pl',
result => <<'EOT',
$messages_result = [
{
msgid => '',
msgstr => 'MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Plural-Forms: nplurals=2; plural=n != 1;
'
},
{
msgctxt => 'c_context',
msgid => 'c_o_singular',
msgid_plural => 'c_o_plural',
msgstr_plural => [
'c_t_singular',
'c_t_plural'
]
},
{
msgctxt => 'context',
msgid => 'c_original',
msgstr => 'c_translated'
},
{
msgid => 'o_singular',
msgid_plural => 'o_plural',
msgstr_plural => [
't_singular',
't_plural'
]
},
{
msgid => 'original',
msgstr => 'translated'
}
];
EOT
},
);
plan tests => 0 + @data;
for my $data (@data) {
my $dir = getcwd;
chdir("$dir/$data->{path}");
my $result = qx{perl $data->{script} 2>&1};
$CHILD_ERROR
and die "Couldn't run $data->{script} (status $CHILD_ERROR)";
chdir($dir);
eq_or_diff
$result,
$data->{result},
$data->{test};
}