From f0a9c930a9e16efb964190cdb9059610668b098e Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 24 Feb 2010 20:49:45 -0600 Subject: pretty major rewrite, now based on Locale::Maketext::Lexicon --- t/001-basic.t | 19 ++++++++++++++++--- t/002-create.t | 49 +++++++++++++++++++++++++++++++++---------------- t/data/001/de.po | 1 + t/data/001/ru.po | 1 + 4 files changed, 51 insertions(+), 19 deletions(-) (limited to 't') diff --git a/t/001-basic.t b/t/001-basic.t index 05e9299..6bda558 100644 --- a/t/001-basic.t +++ b/t/001-basic.t @@ -8,6 +8,16 @@ use Path::Class; use Locale::POFileManager; +sub header_is { + my ($got, $expected) = @_; + local $Test::Builder::Level = $Test::Builder::Level + 1; + my @got = split /\n/, $got, -1; + my @expected = split /\n/, $expected, -1; + is_deeply([@got[0..1], sort @got[2..$#got]], + [@expected[0..1], sort @expected[2..$#expected]], + "got the right header"); +} + { my $manager = Locale::POFileManager->new( base_dir => 't/data/001', @@ -34,7 +44,7 @@ use Locale::POFileManager; {ru => [], hi => [], en => [], de => []}, "got the correct missing messages"); - my $header = <<'HEADER'; + my $expected_header = <<'HEADER'; msgid "" msgstr "" "MIME-Version: 1.0\n" @@ -46,7 +56,7 @@ HEADER my %langs = ( en => qq{msgid "foo"\nmsgstr "foo"\n\n} . qq{msgid "bar"\nmsgstr "bar"\n\n} - . qq{msgid "baz"\nmsgstr "baz"\n\n}, + . qq{msgid "baz"\nmsgstr "baz"\n}, ru => qq{msgid "foo"\nmsgstr "foo"\n\n} . qq{msgid "bar"\n\n} . qq{msgid "baz"\n\n}, @@ -59,7 +69,10 @@ HEADER ); for my $file ($manager->files) { - is($file->file->slurp, $header . $langs{$file->language}, + my $contents = $file->file->slurp; + my ($header, $data) = ($contents =~ /^(.*?\n\n)(.*)$/s); + header_is($header, $expected_header); + is($data, $langs{$file->language}, "got the right stubs"); } } diff --git a/t/002-create.t b/t/002-create.t index 13a6611..92ec881 100644 --- a/t/002-create.t +++ b/t/002-create.t @@ -8,6 +8,16 @@ use Path::Class; use Locale::POFileManager; +sub header_is { + my ($got, $expected) = @_; + local $Test::Builder::Level = $Test::Builder::Level + 1; + my @got = split /\n/, $got, -1; + my @expected = split /\n/, $expected, -1; + is_deeply([@got[0..1], sort @got[2..$#got]], + [@expected[0..1], sort @expected[2..$#expected]], + "got the right header"); +} + { my $dir = File::Temp->newdir; my $from_dir = dir('t/data/002'); @@ -15,8 +25,8 @@ use Locale::POFileManager; for my $file ($from_dir->children) { copy($file->stringify, $dir->dirname); } - my $header = $tmpdir->file('en.po')->slurp; - $header =~ s/\n\n.*/\n\n/s; + my $expected_header = $tmpdir->file('en.po')->slurp; + $expected_header =~ s/\n\n.*/\n\n/s; my $manager = Locale::POFileManager->new( base_dir => $dir->dirname, @@ -34,8 +44,7 @@ use Locale::POFileManager; "correct directory contents after creation"); for my $lang (qw(ru hi)) { - is($tmpdir->file("$lang.po")->slurp, $header, - "got the right header in $lang.po"); + header_is(scalar($tmpdir->file("$lang.po")->slurp), $expected_header); } $manager->language_file('ru')->add_entry( @@ -45,7 +54,7 @@ use Locale::POFileManager; is_deeply([sort $manager->language_file('ru')->msgids], ['', qw(baz)], "created new entry successfully"); - is($manager->language_file('ru')->entry_for('baz')->msgstr, '"Zab"', + is($manager->language_file('ru')->msgstr('baz'), 'Zab', "correct entry created"); is_deeply([sort $manager->language_file('hi')->msgids], @@ -61,20 +70,28 @@ use Locale::POFileManager; } my %langs = ( - en => qq{msgid "foo"\nmsgstr "foo"\n\n} - . qq{msgid "bar"\nmsgstr "bar"\n\n} - . qq{msgid "baz"\nmsgstr "baz"\n\n}, - hi => qq{msgid "foo"\n\n} - . qq{msgid "bar"\n\n} - . qq{msgid "baz"\n\n}, - ru => qq{msgid "baz"\nmsgstr "Zab"\n\n} - . qq{msgid "foo"\n\n} - . qq{msgid "bar"\n\n}, + en => [qq{msgid "foo"\nmsgstr "foo"\n\n} + . qq{msgid "bar"\nmsgstr "bar"\n\n} + . qq{msgid "baz"\nmsgstr "baz"\n}, + qq{}], + hi => [qq{}, + qq{msgid "foo"\n\n} + . qq{msgid "bar"\n\n} + . qq{msgid "baz"\n\n}], + ru => [qq{msgid "baz"\nmsgstr "Zab"\n\n}, + qq{msgid "foo"\n\n} + . qq{msgid "bar"\n\n}], ); for my $lang (keys %langs) { - is($manager->language_file($lang)->file->slurp, $header . $langs{$lang}, - "files created properly"); + my $contents = $manager->language_file($lang)->file->slurp; + my ($header, $data) = ($contents =~ /^(.*?\n\n)(.*)$/s); + header_is($header, $expected_header); + my $fixed = substr($data, 0, length($langs{$lang}->[0]), ''); + is($fixed, $langs{$lang}->[0], "existing data untouched"); + is_deeply([sort split /\n\n/, $data], + [sort split /\n\n/, $langs{$lang}->[1]], + "correct new msgids added"); } } diff --git a/t/data/001/de.po b/t/data/001/de.po index b8aa9a8..da72c60 100644 --- a/t/data/001/de.po +++ b/t/data/001/de.po @@ -12,3 +12,4 @@ msgstr "bar" msgid "baz" msgstr "baz" + diff --git a/t/data/001/ru.po b/t/data/001/ru.po index 97a8e7f..3cf4e46 100644 --- a/t/data/001/ru.po +++ b/t/data/001/ru.po @@ -6,3 +6,4 @@ msgstr "" msgid "foo" msgstr "foo" + -- cgit v1.2.3-54-g00ecf