On Sat, Jun 14, 2025 at 11:07:53PM +0100, Gavin Smith wrote:
> Commit e9a68e4d6a95f3a0f62 (today's date).
>
> I cannot regenerate the tta/perl tests (to test changes I am working on). If
> under tta/perl I run
>
> $ ../maintain/all_tests.sh generate
>
> I get an error message:
>
> ./t/02coverage.t
> ok 1
> ReadDocbook::convert_tree: undef reader
> at t//../../perl/Texinfo/Convert/ReadDocBook.pm line 397.
>
> Texinfo::Convert::ReadDocBook::convert_tree(Texinfo::Convert::ReadDocBook=HASH(
>
> Texinfo::Convert::Converter::convert_accents(Texinfo::Convert::ReadDocBook=HASH
>
> Texinfo::Convert::Converter::xml_accents(Texinfo::Convert::ReadDocBook=HASH(0x5
>
> Texinfo::Convert::ReadDocBook::_convert(Texinfo::Convert::ReadDocBook=HASH(0x55
>
> Texinfo::Convert::ReadDocBook::convert_tree(Texinfo::Convert::ReadDocBook=HASH(
>
> Texinfo::Convert::ReadDocBook::convert(Texinfo::Convert::ReadDocBook=HASH(0x559
> main::convert_to_docbook(main=HASH(0x5591e24a4520), "commands",
> "docbook", Texi
> main::test(main=HASH(0x5591e24a4520), ARRAY(0x5591e05374b8)) called
> at t//../..
> main::run_all("coverage", ARRAY(0x5591e27fdb58)) called at
> ./t/02coverage.t lin
> # Tests were run but no plan was declared and done_testing() was not seen.
> # Looks like your test exited with 2 just after 1.
>
> "make check" appears to be broken as well:
I found that Texinfo::Reader::new was trying to retrieve the
'element_document_descriptor'
value on the element hash. However, there was no such value.
This test breaks:
$ perl -w t/02coverage.t commands
The output, with debugging statements added, ends:
[C1] at t//../../perl/Texinfo/Convert/ReadDocBook.pm line 396.
$VAR1 = bless( {
'contents' => [
bless( {
'text' => 'e'
}, 'Texinfo::TreeElement' )
]
}, 'Texinfo::TreeElement' );
contents at t//../../perl/Texinfo/Convert/ReadDocBook.pm line 398.
fetch doc <(nil)>
ERROR: Texinfo::Reader::new: no element_document_descriptor
no document for 0x5576f5e220e8
ReadDocbook::convert_tree: undef reader
at t//../../perl/Texinfo/Convert/ReadDocBook.pm line 402.
Texinfo::Convert::ReadDocBook::convert_tree(Texinfo::Convert::ReadDocBook=HASH(0x5576f5e20be0),
Texinfo::TreeElement=HASH(0x5576f5e98298)) called at
t//../../perl/Texinfo/Convert/Converter.pm line 2054
Texinfo::Convert::Converter::convert_accents(Texinfo::Convert::ReadDocBook=HASH(0x5576f5e20be0),
Texinfo::TreeElement=HASH(0x5576f5cb3f00), CODE(0x5576f4d8ac40), undef, 0)
called at t//../../perl/Texinfo/Convert/Converter.pm line 2597
Texinfo::Convert::Converter::xml_accents(Texinfo::Convert::ReadDocBook=HASH(0x5576f5e20be0),
Texinfo::TreeElement=HASH(0x5576f5cb3f00), 0) called at
t//../../perl/Texinfo/Convert/ReadDocBook.pm line 992
Texinfo::Convert::ReadDocBook::_convert(Texinfo::Convert::ReadDocBook=HASH(0x5576f5e20be0),
Texinfo::Reader=SCALAR(0x5576f5e97f68)) called at
t//../../perl/Texinfo/Convert/ReadDocBook.pm line 413
Texinfo::Convert::ReadDocBook::convert_tree(Texinfo::Convert::ReadDocBook=HASH(0x5576f5e20be0),
Texinfo::TreeElement=HASH(0x5576f58f6ac8)) called at
t//../../perl/Texinfo/Convert/ReadDocBook.pm line 375
Texinfo::Convert::ReadDocBook::convert(Texinfo::Convert::ReadDocBook=HASH(0x5576f5e20be0),
Texinfo::Document=HASH(0x5576f58f6750)) called at
t//../../perl/t/test_utils.pl line 540
main::convert_to_docbook(main=HASH(0x5576f58f64f8), "commands",
"docbook", Texinfo::Document=HASH(0x5576f58f6750), HASH(0x5576f5be1c38)) called
at t//../../perl/t/test_utils.pl line 1169
main::test(main=HASH(0x5576f58f64f8), ARRAY(0x5576f388d4b8)) called at
t//../../perl/t/test_utils.pl line 1651
main::run_all("coverage", ARRAY(0x5576f58f5ce8)) called at
t/02coverage.t line 1037
# Tests were run but no plan was declared and done_testing() was not seen.
# Looks like your test exited with 2 just after 1.
Texinfo::Convert::Converter::convert_accents calls convert_tree on
something that isn't a "document":
sub convert_accents($$$;$$)
{
my $self = shift;
my $accent = shift;
my $format_accents = shift;
my $output_encoded_characters = shift;
my $in_upper_case = shift;
my ($contents_element, $stack)
= Texinfo::Convert::Utils::find_innermost_accent_contents($accent);
my $arg_text = '';
if (defined($contents_element)) {
$arg_text = $self->convert_tree($contents_element);
}
I am going to see if it is easy to turn ReaderDocBook off as the recent
comment in the ChangeLog said it was just turned on for testing.
diff --git a/tta/perl/Texinfo/Convert/ReadDocBook.pm
b/tta/perl/Texinfo/Convert/ReadDocBook.pm
index c384d7a65b..95aa76b1d5 100644
--- a/tta/perl/Texinfo/Convert/ReadDocBook.pm
+++ b/tta/perl/Texinfo/Convert/ReadDocBook.pm
@@ -392,11 +392,23 @@ sub convert_tree($$)
push @{$self->{'lang_stack'}}, '';
}
+warn "-----------(\n";
+warn Texinfo::Common::debug_print_element($root);
+warn Texinfo::Common::debug_print_tree($root);
+ warn join(':', keys(%$root));
my $reader = Texinfo::Reader::new($root);
if (!defined($reader)) {
confess("ReadDocbook::convert_tree: undef reader\n");
+ use Devel::StackTrace;
+
+ my $trace = Devel::StackTrace->new;
+
+ print $trace->as_string; # like carp
+
}
+warn ")-----------\n";
+
return _convert($self, $reader);
}
diff --git a/tta/perl/XSTexinfo/parser_document/ReaderXS.xs
b/tta/perl/XSTexinfo/parser_document/ReaderXS.xs
index 743988a331..fc548a0f72 100644
--- a/tta/perl/XSTexinfo/parser_document/ReaderXS.xs
+++ b/tta/perl/XSTexinfo/parser_document/ReaderXS.xs
@@ -49,17 +49,22 @@ new (SV *element_sv)
PREINIT:
DOCUMENT *document;
CODE:
- document = get_sv_element_document (element_sv, 0);
+ document = get_sv_element_document (element_sv,
"Texinfo::Reader::new");
if (document)
{
ELEMENT *element
= get_sv_element_element (element_sv, document);
size_t reader_number = txi_register_new_reader (element, document);
+ fprintf(stderr, "reader number %d\n", reader_number);
+
HV *hv_stash = gv_stashpv ("Texinfo::Reader", GV_ADD);
RETVAL = sv_bless (newRV_noinc (newSViv (reader_number)),
hv_stash);
}
else
+{
+fprintf(stderr, "no document for %p\n", element_sv);
RETVAL = newSV (0);
+}
OUTPUT:
RETVAL