Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Test-Harness for 
openSUSE:Factory checked in at 2025-05-12 16:52:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Test-Harness (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Test-Harness.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Test-Harness"

Mon May 12 16:52:03 2025 rev:2 rq:1276802 version:3.52

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Test-Harness/perl-Test-Harness.changes      
2025-01-16 18:35:27.305227962 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Test-Harness.new.30101/perl-Test-Harness.changes
   2025-05-12 16:55:44.657938143 +0200
@@ -1,0 +2,12 @@
+Sun May  4 05:34:35 UTC 2025 - Tina Müller <[email protected]>
+
+- updated to 3.52
+   see /usr/share/doc/packages/perl-Test-Harness/Changes
+
+  3.52    2025-05-03
+
+  3.51_01 2025-01-17
+          - Supports additional indicators on block scalars in YAML
+          - fix string comparisons with $] to use numeric comparison instead
+
+-------------------------------------------------------------------

Old:
----
  Test-Harness-3.50.tar.gz

New:
----
  Test-Harness-3.52.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Test-Harness.spec ++++++
--- /var/tmp/diff_new_pack.lcx68k/_old  2025-05-12 16:55:46.222003755 +0200
+++ /var/tmp/diff_new_pack.lcx68k/_new  2025-05-12 16:55:46.226003923 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Test-Harness
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define cpan_name Test-Harness
 Name:           perl-Test-Harness
-Version:        3.50
+Version:        3.52
 Release:        0
 License:        Artistic-1.0 OR GPL-1.0-or-later
 Summary:        Run Perl standard test scripts with statistics
@@ -45,7 +45,7 @@
 distribution.
 
 %prep
-%autosetup  -n %{cpan_name}-%{version}
+%autosetup  -n %{cpan_name}-%{version} -p1
 
 find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path 
"*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 
644
 # MANUAL BEGIN

++++++ Test-Harness-3.50.tar.gz -> Test-Harness-3.52.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/Changes 
new/Test-Harness-3.52/Changes
--- old/Test-Harness-3.50/Changes       2024-08-13 19:40:09.000000000 +0200
+++ new/Test-Harness-3.52/Changes       2025-05-03 12:44:09.000000000 +0200
@@ -1,5 +1,11 @@
 Revision history for Test-Harness
 
+3.52    2025-05-03
+
+3.51_01 2025-01-17
+        - Supports additional indicators on block scalars in YAML
+        - fix string comparisons with $] to use numeric comparison instead
+
 3.50    2024-08-13
         - Simplify runtests for easier extension
         - Prevent double summary on bail-out
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/META.json 
new/Test-Harness-3.52/META.json
--- old/Test-Harness-3.50/META.json     2024-08-13 19:41:12.000000000 +0200
+++ new/Test-Harness-3.52/META.json     2025-05-03 12:45:43.000000000 +0200
@@ -4,7 +4,7 @@
       "unknown"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter 
version 2.150010",
+   "generated_by" : "ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter 
version 2.150010",
    "keywords" : [
       "TAP",
       "test",
@@ -53,6 +53,6 @@
          "url" : 
"http://github.com/Perl-Toolchain-Gang/Test-Harness/tree/master";
       }
    },
-   "version" : "3.50",
-   "x_serialization_backend" : "JSON::PP version 4.16"
+   "version" : "3.52",
+   "x_serialization_backend" : "JSON::PP version 4.07"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/META.yml 
new/Test-Harness-3.52/META.yml
--- old/Test-Harness-3.50/META.yml      2024-08-13 19:41:12.000000000 +0200
+++ new/Test-Harness-3.52/META.yml      2025-05-03 12:45:43.000000000 +0200
@@ -7,7 +7,7 @@
 configure_requires:
   ExtUtils::MakeMaker: '0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.64, CPAN::Meta::Converter version 
2.150010'
 keywords:
   - TAP
   - test
@@ -29,5 +29,5 @@
   bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness
   homepage: http://testanything.org/
   repository: http://github.com/Perl-Toolchain-Gang/Test-Harness/tree/master
-version: '3.50'
+version: '3.52'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/App/Prove/State/Result/Test.pm 
new/Test-Harness-3.52/lib/App/Prove/State/Result/Test.pm
--- old/Test-Harness-3.50/lib/App/Prove/State/Result/Test.pm    2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/App/Prove/State/Result/Test.pm    2025-05-01 
12:21:28.000000000 +0200
@@ -9,11 +9,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/App/Prove/State/Result.pm 
new/Test-Harness-3.52/lib/App/Prove/State/Result.pm
--- old/Test-Harness-3.50/lib/App/Prove/State/Result.pm 2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/App/Prove/State/Result.pm 2025-05-01 
12:21:28.000000000 +0200
@@ -14,11 +14,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/App/Prove/State.pm 
new/Test-Harness-3.52/lib/App/Prove/State.pm
--- old/Test-Harness-3.50/lib/App/Prove/State.pm        2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/App/Prove/State.pm        2025-05-01 
12:21:28.000000000 +0200
@@ -25,11 +25,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/App/Prove.pm 
new/Test-Harness-3.52/lib/App/Prove.pm
--- old/Test-Harness-3.50/lib/App/Prove.pm      2024-08-13 19:39:03.000000000 
+0200
+++ new/Test-Harness-3.52/lib/App/Prove.pm      2025-05-01 12:21:28.000000000 
+0200
@@ -18,11 +18,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Base.pm 
new/Test-Harness-3.52/lib/TAP/Base.pm
--- old/Test-Harness-3.50/lib/TAP/Base.pm       2024-08-13 19:39:03.000000000 
+0200
+++ new/Test-Harness-3.52/lib/TAP/Base.pm       2025-05-01 12:21:28.000000000 
+0200
@@ -12,11 +12,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 use constant GOT_TIME_HIRES => do {
     eval 'use Time::HiRes qw(time);';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Formatter/Base.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/Base.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/Base.pm     2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/Base.pm     2025-05-01 
12:21:28.000000000 +0200
@@ -58,11 +58,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
@@ -419,9 +419,7 @@
 }
 
 sub _output {
-    my $self = shift;
-
-    print { $self->stdout } @_;
+    print { shift->stdout } @_;
 }
 
 sub _failure_output {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Formatter/Color.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/Color.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/Color.pm    2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/Color.pm    2025-05-01 
12:21:28.000000000 +0200
@@ -39,11 +39,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Formatter/Console/ParallelSession.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/Console/ParallelSession.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/Console/ParallelSession.pm  
2024-08-13 19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/Console/ParallelSession.pm  
2025-05-01 12:21:28.000000000 +0200
@@ -41,11 +41,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Formatter/Console/Session.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/Console/Session.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/Console/Session.pm  2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/Console/Session.pm  2025-05-01 
12:21:28.000000000 +0200
@@ -26,11 +26,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
@@ -128,10 +128,8 @@
                 my $planned = $parser->tests_planned || '?';
                 $plan = "/$planned ";
             }
-            $output = $formatter->_get_output_method($parser);
 
             if ( $show_count and $is_test ) {
-                my $number = $result->number;
                 my $now    = CORE::time;
 
                 # Print status roughly once per second.
@@ -139,6 +137,8 @@
                 # $last_status_printed starting with the value 0, which $now
                 # will never be. (Unless someone sets their clock to 1970)
                 if ( $last_status_printed != $now ) {
+                    my $number = $result->number;
+                    $output = $formatter->_get_output_method($parser);
                     $formatter->$output("\r$pretty$number$plan");
                     $last_status_printed = $now;
                 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Formatter/Console.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/Console.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/Console.pm  2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/Console.pm  2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Formatter/File/Session.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/File/Session.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/File/Session.pm     2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/File/Session.pm     2025-05-01 
12:21:28.000000000 +0200
@@ -10,11 +10,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Formatter/File.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/File.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/File.pm     2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/File.pm     2025-05-01 
12:21:28.000000000 +0200
@@ -13,11 +13,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Formatter/Session.pm 
new/Test-Harness-3.52/lib/TAP/Formatter/Session.pm
--- old/Test-Harness-3.50/lib/TAP/Formatter/Session.pm  2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Formatter/Session.pm  2025-05-01 
12:21:28.000000000 +0200
@@ -23,11 +23,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 METHODS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Harness/Env.pm 
new/Test-Harness-3.52/lib/TAP/Harness/Env.pm
--- old/Test-Harness-3.50/lib/TAP/Harness/Env.pm        2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Harness/Env.pm        2025-05-01 
12:21:28.000000000 +0200
@@ -7,7 +7,7 @@
 use TAP::Object;
 use Text::ParseWords qw/shellwords/;
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 # Get the parts of @INC which are changed from the stock list AND
 # preserve reordering of stock directories.
@@ -126,7 +126,7 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Harness.pm 
new/Test-Harness-3.52/lib/TAP/Harness.pm
--- old/Test-Harness-3.50/lib/TAP/Harness.pm    2024-08-13 19:39:03.000000000 
+0200
+++ new/Test-Harness-3.52/lib/TAP/Harness.pm    2025-05-01 12:21:28.000000000 
+0200
@@ -16,11 +16,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 $ENV{HARNESS_ACTIVE}  = 1;
 $ENV{HARNESS_VERSION} = $VERSION;
@@ -87,7 +87,7 @@
         trap              => sub { shift; shift },
     );
 
-    for my $method ( sort keys %VALIDATION_FOR ) {
+    for my $method ( keys %VALIDATION_FOR ) {
         no strict 'refs';
         if ( $method eq 'lib' || $method eq 'switches' ) {
             *{$method} = sub {
@@ -432,7 +432,7 @@
         $self->SUPER::_initialize( $arg_for, \@legal_callback );
         my %arg_for = %$arg_for;    # force a shallow copy
 
-        for my $name ( sort keys %VALIDATION_FOR ) {
+        for my $name ( keys %VALIDATION_FOR ) {
             my $property = delete $arg_for{$name};
             if ( defined $property ) {
                 my $validate = $VALIDATION_FOR{$name};
@@ -475,8 +475,8 @@
             );
         }
 
-        if ( my @props = sort keys %arg_for ) {
-            $self->_croak("Unknown arguments to TAP::Harness::new (@props)");
+        if ( my @props = keys %arg_for ) {
+            $self->_croak('Unknown arguments to TAP::Harness::new ('.join(' 
',sort @props).')');
         }
 
         return $self;
@@ -494,7 +494,7 @@
                warn "CPAN::Meta::YAML required to process $rulesfile" ;
                return;
             }
-            my $layer = $] lt "5.008" ? "" : ":encoding(UTF-8)";
+            my $layer = "$]" < "5.008" ? "" : ":encoding(UTF-8)";
             open my $fh, "<$layer", $rulesfile
                 or die "Couldn't open $rulesfile: $!";
             my $yaml_text = do { local $/; <$fh> };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Object.pm 
new/Test-Harness-3.52/lib/TAP/Object.pm
--- old/Test-Harness-3.50/lib/TAP/Object.pm     2024-08-13 19:39:03.000000000 
+0200
+++ new/Test-Harness-3.52/lib/TAP/Object.pm     2025-05-01 12:21:28.000000000 
+0200
@@ -9,11 +9,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
@@ -50,9 +50,7 @@
 =cut
 
 sub new {
-    my $class = shift;
-    my $self = bless {}, $class;
-    return $self->_initialize(@_);
+    return bless({}, shift)->_initialize(@_);
 }
 
 =head2 Instance Methods
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Aggregator.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Aggregator.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Aggregator.pm  2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Aggregator.pm  2025-05-01 
12:21:28.000000000 +0200
@@ -12,11 +12,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Grammar.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Grammar.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Grammar.pm     2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Grammar.pm     2025-05-01 
12:21:28.000000000 +0200
@@ -14,11 +14,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Iterator/Array.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Iterator/Array.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Iterator/Array.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Iterator/Array.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Iterator/Process.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Iterator/Process.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Iterator/Process.pm    2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Iterator/Process.pm    2025-05-01 
12:21:28.000000000 +0200
@@ -8,7 +8,7 @@
 
 use base 'TAP::Parser::Iterator';
 
-my $IS_WIN32 = ( $^O =~ /^(MS)?Win32$/ );
+use constant IS_WIN32 => !!( $^O =~ /^(MS)?Win32$/ );
 
 =head1 NAME
 
@@ -16,11 +16,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
@@ -91,8 +91,7 @@
 }
 
 sub _use_open3 {
-    my $self = shift;
-    return unless $Config{d_fork} || $IS_WIN32;
+    return unless $Config{d_fork} || IS_WIN32;
     for my $module (qw( IPC::Open3 IO::Select )) {
         eval "use $module";
         return if $@;
@@ -147,7 +146,7 @@
 
         # }}}
 
-        if ($IS_WIN32) {
+        if (IS_WIN32) {
             $err = $merge ? '' : '>&STDERR';
             eval {
                 $pid = open3(
@@ -340,7 +339,7 @@
 
     # Sometimes we get -1 on Windows. Presumably that means status not
     # available.
-    $status = 0 if $IS_WIN32 && $status == -1;
+    $status = 0 if IS_WIN32 && $status == -1;
 
     $self->{wait} = $status;
     $self->{exit} = $self->_wait2exit($status);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Iterator/Stream.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Iterator/Stream.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Iterator/Stream.pm     2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Iterator/Stream.pm     2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Iterator.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Iterator.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Iterator.pm    2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Iterator.pm    2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
@@ -61,6 +61,8 @@
 
 =cut
 
+if ( $^O eq 'VMS' ) {
+    eval <<'END' ;
 sub next {
     my $self = shift;
     my $line = $self->next_raw;
@@ -75,6 +77,11 @@
 
     return $line;
 }
+END
+}
+else {
+    eval 'sub next { shift->next_raw(@_) }';
+}
 
 sub next_raw {
     require Carp;
@@ -125,17 +132,8 @@
 
 =cut
 
-sub wait {
-    require Carp;
-    my $msg = Carp::longmess('abstract method called directly!');
-    $_[0]->_croak($msg);
-}
-
-sub exit {
-    require Carp;
-    my $msg = Carp::longmess('abstract method called directly!');
-    $_[0]->_croak($msg);
-}
+#can not call abstract base method, next_raw is a fatal stub
+*exit = *wait = *next_raw;
 
 1;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/IteratorFactory.pm 
new/Test-Harness-3.52/lib/TAP/Parser/IteratorFactory.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/IteratorFactory.pm     2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/IteratorFactory.pm     2025-05-01 
12:21:28.000000000 +0200
@@ -16,11 +16,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Multiplexer.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Multiplexer.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Multiplexer.pm 2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Multiplexer.pm 2025-05-01 
12:21:28.000000000 +0200
@@ -18,11 +18,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/Bailout.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/Bailout.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/Bailout.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/Bailout.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/Comment.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/Comment.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/Comment.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/Comment.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/Plan.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/Plan.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/Plan.pm 2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/Plan.pm 2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/Pragma.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/Pragma.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/Pragma.pm       2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/Pragma.pm       2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/Test.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/Test.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/Test.pm 2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/Test.pm 2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/Unknown.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/Unknown.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/Unknown.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/Unknown.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/Version.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/Version.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/Version.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/Version.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result/YAML.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result/YAML.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result/YAML.pm 2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result/YAML.pm 2025-05-01 
12:21:28.000000000 +0200
@@ -11,11 +11,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Result.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Result.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Result.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Result.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -24,11 +24,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/ResultFactory.pm 
new/Test-Harness-3.52/lib/TAP/Parser/ResultFactory.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/ResultFactory.pm       2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/ResultFactory.pm       2025-05-01 
12:21:28.000000000 +0200
@@ -29,11 +29,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head2 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Scheduler/Job.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Scheduler/Job.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Scheduler/Job.pm       2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Scheduler/Job.pm       2025-05-01 
12:21:28.000000000 +0200
@@ -10,11 +10,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Parser/Scheduler/Spinner.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Scheduler/Spinner.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Scheduler/Spinner.pm   2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Scheduler/Spinner.pm   2025-05-01 
12:21:28.000000000 +0200
@@ -10,11 +10,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Scheduler.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Scheduler.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Scheduler.pm   2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Scheduler.pm   2025-05-01 
12:21:28.000000000 +0200
@@ -13,11 +13,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
@@ -58,7 +58,7 @@
 to express simple rules like "run all tests in sequence" or "run all tests in
 parallel except these five tests.". However, the rules structure also supports
 glob-style pattern matching and recursive definitions, so you can also express
-arbitarily complicated patterns.
+arbitrarily complicated patterns.
 
 The rule must only have one top level key: either 'par' for "parallel" or 'seq'
 for "sequence".
@@ -67,7 +67,7 @@
 of strings or hashrefs which follow this pattern recursively.
 
 Every element in an arrayref directly below a 'par' key is eligible to be run
-in parallel, while vavalues directly below a 'seq' key must be run in sequence.
+in parallel, while values directly below a 'seq' key must be run in sequence.
 
 =head3 Rules examples
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/Source.pm 
new/Test-Harness-3.52/lib/TAP/Parser/Source.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/Source.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/Source.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -14,11 +14,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/Executable.pm 
new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/Executable.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/Executable.pm    
2024-08-13 19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/Executable.pm    
2025-05-01 12:21:28.000000000 +0200
@@ -18,11 +18,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/File.pm 
new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/File.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/File.pm  2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/File.pm  2025-05-01 
12:21:28.000000000 +0200
@@ -16,11 +16,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/Handle.pm 
new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/Handle.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/Handle.pm        
2024-08-13 19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/Handle.pm        
2025-05-01 12:21:28.000000000 +0200
@@ -16,11 +16,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/Perl.pm 
new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/Perl.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/Perl.pm  2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/Perl.pm  2025-05-01 
12:21:28.000000000 +0200
@@ -21,11 +21,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/RawTAP.pm 
new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/RawTAP.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler/RawTAP.pm        
2024-08-13 19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler/RawTAP.pm        
2025-05-01 12:21:28.000000000 +0200
@@ -16,11 +16,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler.pm 
new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/SourceHandler.pm       2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/SourceHandler.pm       2025-05-01 
12:21:28.000000000 +0200
@@ -12,11 +12,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/YAMLish/Reader.pm 
new/Test-Harness-3.52/lib/TAP/Parser/YAMLish/Reader.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/YAMLish/Reader.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/YAMLish/Reader.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -5,7 +5,7 @@
 
 use base 'TAP::Object';
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
                              # No EBCDIC support on early perls
 *to_native = (ord "A" == 65 || $] < 5.008)
@@ -137,23 +137,9 @@
     return {} if $string eq '{}';
     return [] if $string eq '[]';
 
-    if ( $string eq '>' || $string eq '|' ) {
-
-        my ( $line, $indent ) = $self->_peek;
-        die "Multi-line scalar content missing" unless defined $line;
-
-        my @multiline = ($line);
-
-        while (1) {
-            $self->_next;
-            my ( $next, $ind ) = $self->_peek;
-            last if $ind < $indent;
-
-            my $pad = $string eq '|' ? ( ' ' x ( $ind - $indent ) ) : '';
-            push @multiline, $pad . $next;
-        }
-
-        return join( ( $string eq '>' ? ' ' : "\n" ), @multiline ) . "\n";
+    if ( $string =~ /^([>|])([+-]?)([1-9]?)$/ ) {
+        my ( $style, $chomping, $indent_base ) = ( $1, $2, $3 );
+        return $self->_read_block_scalar( $style, $chomping, $indent_base );
     }
 
     if ( $string =~ /^ ' (.*) ' $/x ) {
@@ -175,6 +161,62 @@
     return $string;
 }
 
+sub _read_block_scalar {
+    my ( $self, $style, $chomping, $indent_base ) = @_;
+
+    my ( $line, $line_indent ) = $self->_peek;
+    die "Multi-line scalar content missing" unless defined $line;
+
+    $indent_base ||= $line_indent;
+
+    my $pad = ' ' x ( $line_indent - $indent_base );
+    my @multi_lines = [ $pad, $line ];
+
+    while (1) {
+        $self->_next;
+        my ( $content, $line_indent ) = $self->_peek;
+        last if $line_indent < $indent_base;
+
+        my $pad = ' ' x ( $line_indent - $indent_base );
+        push @multi_lines, [ $pad, $content ];
+    }
+
+    my $block = '';
+    my $previous_line;
+
+    for my $current_line ( @multi_lines ) {
+        my ( $pad, $content ) = @$current_line;
+        unless ( defined $previous_line ) {
+            $block .= join( '', $pad, $content );
+            $previous_line = $current_line;
+            next;
+        }
+
+        if ( $style eq '>'
+             && length $content > 0
+             && length $pad == 0
+             && length $previous_line->[0] == 0
+             && length $previous_line->[1] > 0 )
+        {
+            $block .= ' ' . $content;
+        } else {
+            $block .= join( '', "\n", $pad, $content );
+        }
+        $previous_line = $current_line;
+    }
+
+    $block .= "\n";
+
+    if ( $chomping eq '-' ) {
+        $block =~ s/\n+$//;
+    } elsif ( $chomping eq '+' ) {
+        # noop: keep newlines
+    } else {
+         $block =~ s/\n+$/\n/;
+    }
+    return $block;
+}
+
 sub _read_nested {
     my $self = shift;
 
@@ -284,7 +326,7 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser/YAMLish/Writer.pm 
new/Test-Harness-3.52/lib/TAP/Parser/YAMLish/Writer.pm
--- old/Test-Harness-3.50/lib/TAP/Parser/YAMLish/Writer.pm      2024-08-13 
19:39:03.000000000 +0200
+++ new/Test-Harness-3.52/lib/TAP/Parser/YAMLish/Writer.pm      2025-05-01 
12:21:28.000000000 +0200
@@ -5,7 +5,7 @@
 
 use base 'TAP::Object';
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
                              # No EBCDIC support on early perls
 *from_native = (ord "A" == 65 || $] < 5.008)
@@ -155,7 +155,7 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =head1 SYNOPSIS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/TAP/Parser.pm 
new/Test-Harness-3.52/lib/TAP/Parser.pm
--- old/Test-Harness-3.50/lib/TAP/Parser.pm     2024-08-13 19:39:03.000000000 
+0200
+++ new/Test-Harness-3.52/lib/TAP/Parser.pm     2025-05-01 12:21:28.000000000 
+0200
@@ -27,11 +27,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 my $DEFAULT_TAP_VERSION = 12;
 my $MAX_TAP_VERSION     = 14;
@@ -1340,9 +1340,9 @@
         my $st = { %state_globals, %{ $states{$name} } };
 
         # Add defaults
-        for my $next ( sort keys %{$st} ) {
+        for my $next ( keys %$st ) {
             if ( my $default = $state_defaults{$next} ) {
-                for my $def ( sort keys %{$default} ) {
+                for my $def ( keys %$default ) {
                     $st->{$next}->{$def} ||= $default->{$def};
                 }
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/lib/Test/Harness.pm 
new/Test-Harness-3.52/lib/Test/Harness.pm
--- old/Test-Harness-3.50/lib/Test/Harness.pm   2024-08-13 19:39:03.000000000 
+0200
+++ new/Test-Harness-3.52/lib/Test/Harness.pm   2025-05-01 12:21:28.000000000 
+0200
@@ -31,11 +31,11 @@
 
 =head1 VERSION
 
-Version 3.50
+Version 3.52
 
 =cut
 
-our $VERSION = '3.50';
+our $VERSION = '3.52';
 
 # Backwards compatibility for exportable variable names.
 *verbose  = *Verbose;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/t/compat/test-harness-compat.t 
new/Test-Harness-3.52/t/compat/test-harness-compat.t
--- old/Test-Harness-3.50/t/compat/test-harness-compat.t        2022-03-18 
18:50:59.000000000 +0100
+++ new/Test-Harness-3.52/t/compat/test-harness-compat.t        2025-04-30 
15:04:36.000000000 +0200
@@ -150,14 +150,17 @@
                     'name'   => "$TEST_DIR/too_many",
                     'wstat'  => '1024'
                 },
-                "$TEST_DIR/vms_nit" => {
-                    'canon'  => 1,
-                    'estat'  => '',
-                    'failed' => 1,
-                    'max'    => 2,
-                    'name'   => "$TEST_DIR/vms_nit",
-                    'wstat'  => ''
-                }
+                ( $^O eq 'VMS' ?
+                    ("$TEST_DIR/vms_nit" => {
+                       'canon'  => 1,
+                       'estat'  => '',
+                       'failed' => 1,
+                       'max'    => 2,
+                       'name'   => "$TEST_DIR/vms_nit",
+                       'wstat'  => ''
+                    })
+                    : ()
+                )
             },
             'todo' => {
                 "$TEST_DIR/todo_inline" => {
@@ -170,12 +173,12 @@
                 }
             },
             'totals' => {
-                'bad'         => ($NoTaintSupport ? 11 : 12),
+                'bad'         => ($NoTaintSupport ? 11 : 12)-($^O eq 'VMS' ? 0 
: 1),
                 'bonus'       => 1,
                 'files'       => ($NoTaintSupport ? 24 : 27),
-                'good'        => ($NoTaintSupport ? 13 : 15),
+                'good'        => ($NoTaintSupport ? 13 : 15)+($^O eq 'VMS' ? 0 
: 1),
                 'max'         => ($NoTaintSupport ? 72 : 76),
-                'ok'          => ($NoTaintSupport ? 75 : 78),
+                'ok'          => ($NoTaintSupport ? 75 : 78)+($^O eq 'VMS' ? 0 
: 1),
                 'skipped'     => 2,
                 'sub_skipped' => 2,
                 'tests'       => ($NoTaintSupport ? 24 : 27),
@@ -739,31 +742,35 @@
                 'todo'        => 0
             }
         },
-        'vms_nit' => {
-            'failed' => {
-                "$TEST_DIR/vms_nit" => {
-                    'canon'  => 1,
-                    'estat'  => '',
-                    'failed' => 1,
-                    'max'    => 2,
-                    'name'   => "$TEST_DIR/vms_nit",
-                    'wstat'  => ''
-                }
-            },
-            'todo'   => {},
-            'totals' => {
-                'bad'         => 1,
-                'bonus'       => 0,
-                'files'       => 1,
-                'good'        => 0,
-                'max'         => 2,
-                'ok'          => 1,
-                'skipped'     => 0,
-                'sub_skipped' => 0,
-                'tests'       => 1,
-                'todo'        => 0
-            }
-        }
+        ( $^O eq 'VMS' ?
+            ('vms_nit' => {
+                'failed' => {
+                    "$TEST_DIR/vms_nit" => {
+                        'canon'  => 1,
+                        'estat'  => '',
+                        'failed' => 1,
+                        'max'    => 2,
+                        'name'   => "$TEST_DIR/vms_nit",
+                        'wstat'  => ''
+                    }
+                },
+                'skip_if' => sub { $^O ne 'VMS' },
+                'todo'   => {},
+                'totals' => {
+                    'bad'         => 1,
+                    'bonus'       => 0,
+                    'files'       => 1,
+                    'good'        => 0,
+                    'max'         => 2,
+                    'ok'          => 1,
+                    'skipped'     => 0,
+                    'sub_skipped' => 0,
+                    'tests'       => 1,
+                    'todo'        => 0
+                }
+            })
+            : ()
+        )
     };
 
     my $num_tests = ( keys %$results ) * $PER_LOOP;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/t/iterators.t 
new/Test-Harness-3.52/t/iterators.t
--- old/Test-Harness-3.50/t/iterators.t 2018-10-17 00:28:44.000000000 +0200
+++ new/Test-Harness-3.52/t/iterators.t 2025-04-30 15:04:36.000000000 +0200
@@ -155,16 +155,20 @@
 
 {
 
+    my $iterator;
     # coverage test for VMS case
 
-    my $iterator = make_iterator(
-        [   'not ',
-            'ok 1 - I hate VMS',
-        ]
-    );
-
-    is $iterator->next, 'not ok 1 - I hate VMS',
-      'coverage of VMS line-splitting case';
+    SKIP : {
+        skip('Not VMS', 1) if $^O ne 'VMS';
+        $iterator = make_iterator(
+            [   'not ',
+                'ok 1 - I hate VMS',
+            ]
+        );
+
+        is $iterator->next, 'not ok 1 - I hate VMS',
+          'coverage of VMS line-splitting case';
+    }
 
     # coverage test for VMS case - nothing after 'not'
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/t/multiplexer.t 
new/Test-Harness-3.52/t/multiplexer.t
--- old/Test-Harness-3.50/t/multiplexer.t       2017-07-23 13:29:01.000000000 
+0200
+++ new/Test-Harness-3.52/t/multiplexer.t       2025-04-30 15:04:36.000000000 
+0200
@@ -153,6 +153,9 @@
 
         # use Data::Dumper;
         # diag Dumper( { stash => $stash, result => $result } );
+        my @err = $parser->parse_errors();
+        ok(!@err, "$name: Parser has no parse errors");
+        diag @err if @err;
         if ( defined $result ) {
             my $expect = ( shift @$stash ) || ' OOPS ';
             my $got = $result->raw;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Test-Harness-3.50/t/yamlish.t 
new/Test-Harness-3.52/t/yamlish.t
--- old/Test-Harness-3.50/t/yamlish.t   2022-01-22 19:02:54.000000000 +0100
+++ new/Test-Harness-3.52/t/yamlish.t   2025-04-30 15:04:36.000000000 +0200
@@ -40,16 +40,50 @@
             ],
             out => "Hello, World",
         },
-        {   name => 'Hello World 4',
+        {   name => 'Block Scalars with folded style',
             in   => [
                 '--- >',
                 '   Hello,',
-                '      World',
+                '   World',
                 '...',
             ],
             out => "Hello, World\n",
         },
-        {   name => 'Hello World Block',
+        {   name => 'Block Scalars with folded style including extra 
indentation',
+            in   => [
+                '--- >',
+                '   Hello,',
+                '   World',
+                '     with extra',
+                '     indentation',
+                '...',
+            ],
+            out => "Hello, World\n  with extra\n  indentation\n",
+        },
+        {   name => 'Hello World with folded style and no newline at end',
+            in   => [
+                '--- >-',
+                '   Hello,',
+                '   World',
+                '   ',
+                '...',
+            ],
+            out => "Hello, World",
+        },
+        {   name => 'Hello World with folded style and keeping newlines from 
end',
+            in   => [
+                '--- >+',
+                '   Hello,',
+                '   World',
+                '     ',
+                '   ',
+                '   Hello World again',
+                '   ',
+                '...',
+            ],
+            out => "Hello, World\n  \n\nHello World again\n\n",
+        },
+        {   name => 'Hello World with literal style',
             in   => [
                 '--- |',
                 '   Hello,',
@@ -58,7 +92,45 @@
             ],
             out => "Hello,\n   World\n",
         },
-        {   name => 'Hello World 5',
+        {   name => 'Hello World with literal style and no newline at end',
+            in   => [
+                '--- |-',
+                '   Hello,',
+                '      World',
+                '...',
+            ],
+            out => "Hello,\n   World",
+        },
+        {   name => 'Hello World with literal style and keeping newlines from 
end',
+            in   => [
+                '--- |+',
+                '   Hello,',
+                '      World',
+                '   ',
+                '    ',
+                '...',
+            ],
+            out => "Hello,\n   World\n\n \n",
+        },
+        {   name => 'Hello World with literal style and no newline at end and 
indentation indicator',
+            in   => [
+                '--- |-3',
+                '      Hello,',
+                '    World',
+                '...',
+            ],
+            out => "   Hello,\n World",
+        },
+        {   name => 'Hello World with indentation indicator',
+            in   => [
+                '--- >1',
+                '   Hello,',
+                '  World',
+                '...',
+            ],
+            out => "  Hello,\n World\n",
+        },
+        {   name => 'Hello World with broken indentation',
             in   => [
                 '--- >',
                 '   Hello,',

Reply via email to