#!/usr/bin/perl -w # # Check that comments in PO files are correctly parsed # use strict; use Test::More tests => 11; use_ok('Locale::Maketext::Extract'); my %msgids = ( comment => 'A random string to check that comments work', fuzzy => 'Fuzzy flag', marker => 'Fuzzy plus marker %1' ); my $lex = Locale::Maketext::Extract->new(); ok( $lex, 'Locale::Maketext::Extract object created' ); $lex->read_po('t/comments.po'); # Here '#' and newlines are kept together with the comment # Don't know if it's correct or elegant is( $lex->msg_comment( $msgids{comment} ), 'Some user comment' . "\n" ); ok( $lex->msg_fuzzy( $msgids{fuzzy} ), 'Read fuzzy' ); ok( $lex->msg_fuzzy( $msgids{marker} ), 'Read marker' ); $lex->write_po( 't/comments_out.po', 1 ); $lex->clear(); is( $lex->msg_comment( $msgids{comment} ), undef, 'Comment should be gone with clear()' ); ok( !$lex->msg_fuzzy( $msgids{fuzzy} ), 'Fuzzy cleared' ); # Read back the new po file and check that # the comment is readable again $lex->read_po('t/comments_out.po'); is( $lex->msg_comment( $msgids{comment} ), 'Some user comment' . "\n" ); ok( $lex->msg_fuzzy( $msgids{fuzzy} ), 'Read fuzzy' ); my $po; { local ( *INPUT, $/ ); open( INPUT, 't/comments_out.po' ) || die "can't open 't/comments_out.po': $!"; $po = ; } ok( $po =~ m/#, fuzzy, perl-maketext-format\nmsgid "Fuzzy plus marker %1"/, 'Marker added' ); ok( unlink('t/comments_out.po') );