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