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
 


Reply via email to