use strict; use lib '.'; use Texinfo::ModulePath (undef, undef, undef, 'updirs' => 2); use Test::More; BEGIN { plan tests => 9; } use Texinfo::Parser; use Texinfo::Report; # For consistent error messages, use the C locale $ENV{LC_ALL} = 'C'; $ENV{LANGUAGE} = 'en'; ok(1, "modules loading"); my $registrar = Texinfo::Report::new(); my $initial_error = "Initial error"; $registrar->document_error(undef, $initial_error); my $parser = Texinfo::Parser::parser({'registrar' => $registrar}); # this also tests errors with line_errors not defined my $tree = $parser->parse_texi_piece("\@end format\n"); my $parser_registrar = $parser->registered_errors(); ok ($parser_registrar eq $registrar, 'reused registrar'); my ($error_warnings_list, $error_count) = $parser_registrar->errors(); ok ($error_count == 2, 'error count'); # line_nr is undef with document_error() my @errors_references = ([undef, $initial_error], [1, 'unmatched `@end format\'']); my $error_idx = 0; foreach my $error_message (@$error_warnings_list) { my ($error_line_nr_reference, $error_line_reference) = @{$errors_references[$error_idx]}; ok ($error_message->{'type'} eq 'error', "error type $error_idx"); ok (((not defined($error_message->{'line_nr'}) and not defined($error_line_nr_reference)) or $error_message->{'line_nr'} == $error_line_nr_reference), "error line $error_idx"); ok ($error_message->{'error_line'} eq $error_line_reference."\n", "error message $error_idx"); $error_idx++; }