App-xml_grep2
view release on metacpan or search on metacpan
t/01-options.t view on Meta::CPAN
is( `$XML_GREP2 -q $foo $DATA`, '', '-q no hit');
ok( system( "$XML_GREP2 -q $foo $DATA"), '-q no hit (exit code)');
is( `$XML_GREP2 -q -c $foo $DATA`, '', '-q -c no hit');
ok( system( "$XML_GREP2 -q -c $foo $DATA"), '-q -c no hit (exit code)');
is( `$XML_GREP2 -q -t $foo $DATA`, '', '-q -c no hit');
ok( system( "$XML_GREP2 -q -t $foo $DATA"), '-q -c no hit (exit code)');
is( `$XML_GREP2 -q -v $xel2 $DATA`, '', '-q -v');
is( system( "$XML_GREP2 -q $xel2 $DATA"), 0, '-q -v (exit code)');
is( `$XML_GREP2 -q -v $xdoc $DATA`, '', '-q -v on doc');
ok( system( "$XML_GREP2 -q -v $xdoc $DATA"), '-q -v on doc (exit code)');
is( `$XML_GREP2 -q -v $xdocument $DATA`, '', '-q -v entire document');
ok( system( "$XML_GREP2 -q -v $xdocument $DATA"), '-q -v entire document (exit code)');
is( `$XML_GREP2 -q -v $foo $DATA`, '', '-q -v regular hit');
is( system( "$XML_GREP2 -q -v $foo $DATA"), 0, '-q -v regular hit (exit code)');
like( `$XML_GREP2 $RECURSE -c $xdoc $TEST_DIR 2>&1`,
qr{xml_grep2: t/malformed.xml:2: parser error : Premature end of data in tag doc line 1\n},
'malformed XML'
);
is( `$XML_GREP2 $RECURSE -c -s $xdoc $TEST_DIR 2>&1`, "t/test.xml:1\n", 'malformed XML (-s)');
is( `$XML_GREP2 $RECURSE -q $xdoc $TEST_DIR 2>&1`, '', '-q with malformed XML');
is( system( "$XML_GREP2 $RECURSE -q $xdoc $TEST_DIR 2>&1"), 0, '-q with malformed XML (exit code)');
is( `$XML_GREP2 $RECURSE -q $foo $TEST_DIR 2>&1`, '', '-q with malformed XML, no hit');
ok( system( "$XML_GREP2 $RECURSE -q $foo $TEST_DIR 2>&1"), '-q with malformed XML, no hit (exit code)');
like( `$XML_GREP2 -v $foo $MALFORMED 2>&1`, qr{xml_grep2: t/malformed.xml:2: parser error : Premature end of data in tag doc line 1}, '-v on malformed data');
is( `$XML_GREP2 -v -s $foo $MALFORMED 2>&1`, '', '-v -s on malformed data');
is( `$CAT $DATA | $XML_GREP2 -v $xdoc`, '', '-v on entire doc');
like( `$CAT $DATA | $XML_GREP2 -v $xs1`, qr{<\?xml[^>]*>\s*<doc>\s*</doc>\s*$}, '-v on entire doc');
like( `$XML_GREP2 -v -X $xs1 $DATA`, qr{<\?xml version="1.0" encoding="UTF-8"\?>\s*<xg2:result_set xmlns:xg2="http://xmltwig.org/tools/xml_grep2/">\s*<doc>\s*</doc>\s*</xg2:result_set>\s*}, '-v -X');
is( `$XML_GREP2 -v $xdocument $DATA`, '', '-q entire document');
test_encoding( "$XML_GREP2 -t $xs1 $LATIN1", "été\n", "utf-8", "-t latin1 input, utf8 output");
test_encoding( "$XML_GREP2 -t -o $xs1 $LATIN1", "été\n", "iso-8859-1", "-t latin1 input, latin1 output");
test_encoding( "$XML_GREP2 $xs1 $LATIN1", wrapped( "<s1>été</s1>"), 'UTF-8', "latin1 input, utf8 output");
test_encoding( "$XML_GREP2 -o $xs1 $LATIN1", wrapped( "<s1>été</s1>", 'ISO-8859-1'), 'ISO-8859-1', "latin1 input, latin1 output");
test_encoding( "$XML_GREP2 -H -o $xs1 $LATIN1", wrapped( file_wrapped( qq{<s1>été</s1>}, $LATIN1), 'ISO-8859-1'), 'ISO-8859-1', "-H -o latin1");
test_encoding( "$XML_GREP2 -f 1 -H -o $xs1 $LATIN1", wrapped( file_wrapped( qq{ <s1>été</s1>}, $LATIN1), 'ISO-8859-1'), 'ISO-8859-1', "-H -o -f 1 latin1");
my $mode= 0000; chmod $mode, $MALFORMED or die "cannot chmod $mode $MALFORMED: $!";
is( `$XML_GREP2 $RECURSE $foo $TEST_DIR 2>&1`, "xml_grep2: $MALFORMED: Permission denied\n", 'test on unreadable file');
$mode= 0644; chmod $mode, $MALFORMED or die "cannot chmod $mode $MALFORMED: $!";
# prepare the catalog (make uri absolute)
system "$PERL -p -e$Q use Cwd; s{PWD}{cwd()}ge;$Q t/catalog.templ > t/catalog";
is( `$XML_GREP2 -t -C $TEST_DIR/catalog $xs1 $TEST_DIR/with_cat.cxml`, "entity c \n", "-C");
is( `$XML_GREP2 --html -t $xp $HTML`, "bar\n", '--html');
is( `$CAT $HTML | $XML_GREP2 --html -t $xp `, "bar\n", '--html (from STDIN)');
my $version= `$XML_GREP2 -V 1 2>&1`;
chomp $version;
like( `$XML_GREP2 -V 1 2>&1`, qr{xml_grep2 version \d+\.\d+$}, "version '$version' looks ok");
sub test_encoding
{ my( $command, $expected, $encoding, $message)= @_;
unlink $TMP if -f $TMP;
system( "$command > $TMP") && die "grep error: $@";
binmode STDIN;
my $got= do { undef $/; open( my $in, "<:encoding($encoding)", $TMP) or die "error opening $TMP: $!"; <$in>; };
is_fuzzy ( $got, $expected, $message);
binmode STDIN, ':utf8';
}
sub wrapped
{ my( $result, $encoding)= @_;
return xmldecl( $encoding) . qq{<xg2:result_set xmlns:xg2="http://xmltwig.org/tools/xml_grep2/">$result</xg2:result_set>\n};
}
sub xmldecl
{ my($encoding)= @_;
$encoding ||= 'UTF-8';
return qq{<?xml version="1.0" encoding="$encoding"?>};
}
sub file_wrapped
{ my( $to_wrap, $file)= @_;
$file ||= $DATA;
return qq{<xg2:file xg2:filename="$file">$to_wrap</xg2:file>};
}
sub trace
{ my $command= join( ' ', @_);
if( grep /-v/, $ARGV[0]) { warn "$command\n"; }
return `$command`;
}
sub is_fuzzy($$$)
{ my( $got, $expected, $message)= @_;
(my $stripped_expected= $expected)=~ s{\s}{}g;
(my $stripped_got= $got)=~ s{\s}{}g;
if( $stripped_got eq $stripped_expected)
{ ok( 1, $message); }
else
{ ok( 0, $message);
warn " got : $got\n expected:$expected\n";
#warn " got : $stripped_got\n expected: $stripped_expected\n";
}
}
( run in 2.782 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )