use strict;
use lib '.';
use Texinfo::ModulePath (undef, undef, undef, 'updirs' => 2);
use Test::More;
BEGIN { plan tests => 7; }
use Texinfo::Parser;
use Texinfo::Transformations;
use Texinfo::Convert::Texinfo;
use Data::Dumper;
# For consistent error message, use the C locale
$ENV{LC_ALL} = 'C';
# also needed for consistent error message
$ENV{LANGUAGE} = 'C';
ok(1);
sub run_test($$$;$)
{
my $in = shift;
my $out = shift;
my $name = shift;
my $error_message = shift;
my $parser = Texinfo::Parser::parser();
my $tree = $parser->parse_texi_piece($in, 1);
my $registrar = $parser->registered_errors();
my $corrected_tree =
Texinfo::Transformations::protect_hashchar_at_line_beginning($registrar, $parser, $tree);
if (defined($error_message)) {
my ($errors, $errors_count) = $registrar->errors();
my ($error_line_nr_reference, $error_line_reference) = @$error_message;
if (!$error_line_reference) {
if ($errors and scalar(@$errors)) {
print STDERR " --error-> $errors->[0]->{'error_line'}";
} else {
print STDERR "No message\n";
}
} else {
if ($errors and scalar(@$errors)) {
is($error_line_nr_reference, $errors->[0]->{'line_nr'},
"error line: $name");
is($error_line_reference, $errors->[0]->{'error_line'},
"error message: $name");
} else {
ok(0, "error message: $name");
}
}
}
my $texi_result = Texinfo::Convert::Texinfo::convert_to_texinfo($corrected_tree);
if (!defined($out)) {
print STDERR " --> $name:\n$texi_result";
} else {
is ($texi_result, $out, $name);
}
}
run_test ('# line 4 "ggggg"
and
# line 5 "fff"
# 46
# 3 4
# line 4 "bbb"
# 7 "aaaa"
', '@hashchar{} line 4 "ggggg"
and
@hashchar{} line 5 "fff"
@hashchar{} 46
# 3 4
@hashchar{} line 4 "bbb"
@hashchar{} 7 "aaaa"
', 'two paragraphs');
run_test ('
@example
# line 5 "fff"
aaa
b
# line 4 "bbb"
# 7 "aaaa"
@end example
', '
@example
@hashchar{} line 5 "fff"
aaa
b
@hashchar{} line 4 "bbb"
@hashchar{} 7 "aaaa"
@end example
', 'in example');
run_test ('
@table @asis
@item truc
# line 4 "bbb"
@end table
@itemize
# 7 "aaaa"
@item # line 5 "fff"
# 6 "ff"
@end itemize
', '
@table @asis
@item truc
@hashchar{} line 4 "bbb"
@end table
@itemize
@hashchar{} 7 "aaaa"
@item @hashchar{} line 5 "fff"
@hashchar{} 6 "ff"
@end itemize
', 'in block commands');
run_test('
@macro mymacro {}
# line 20 "ff"
@end macro
', '
@macro mymacro {}
# line 20 "ff"
@end macro
', 'in raw command', [2, 'warning: could not protect hash character in @macro
']);
#{
# local $Data::Dumper::Purity = 1;
# local $Data::Dumper::Indent = 1;
#
# print STDERR Data::Dumper->Dump([$tree]);
#}