Perl-Critic/PPI

PPI 1.264 Causes Perl::Critic Error in Perl 5.22 & Newer

wbraswell opened this issue · 6 comments

The latest release of PPI 1.252 (and presumably newer releases) are causing failure for Perl::Critic:

https://ci.appveyor.com/project/petdance/perl-critic/builds/24138034

...
t\04_options_processor.t ...................... ok
#   Failed test 'parse_arg_list: foo( { bar() }, {}, 'blah' )'
#   at t\05_utils.t line 433.
#     Structures begin differing at:
#          $got->[0] = ARRAY(0x5a53a90)
#     $expected->[0] = ' { bar() }'
# Looks like you failed 1 test of 156.
t\05_utils.t .................................. 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/156 subtests 
t\05_utils_perl.t ............................. ok
...

Related to Perl-Critic/Perl-Critic#860

@wchristian
This is a new failure in Perl::Critic which did not exist before PPI 1.252, please provide your guidance on how to recover. Thanks in advance! :-)

This error seems to appear in Perl 5.24 and newer.
https://travis-ci.org/Perl-Critic/Perl-Critic/builds/525222639

Are you sure it is 1.252 and not 1.248?

  • parse list-embedded curlies as hash constructors

If you drill down from the Travis page into the Perl 5.24 build, then view the raw log, you will see this:

https://api.travis-ci.org/v3/job/525222642/log.txt

...
--> Working on PPI
Fetching http://www.cpan.org/authors/id/M/MI/MITHALDU/PPI-1.252.tar.gz ... OK
Configuring PPI-1.252 ... OK
==> Found dependencies: Test::InDistDir
--> Working on Test::InDistDir
Fetching http://www.cpan.org/authors/id/M/MI/MITHALDU/Test-InDistDir-1.112071.tar.gz ... OK
Configuring Test-InDistDir-1.112071 ... OK
Building and testing Test-InDistDir-1.112071 ... OK
Successfully installed Test-InDistDir-1.112071
Building and testing PPI-1.252 ... OK
Successfully installed PPI-1.252 (upgraded from 1.236)
...

@wchristian
Similar to #237...
We have now upgraded Perl::Critic dev branch to require PPI 1.264, and now we are down to only 2 errors for Perl 5.22 and newer.
(Thus, I have renamed this issue.)
https://travis-ci.org/Perl-Critic/Perl-Critic/builds/526963275
https://api.travis-ci.org/v3/job/526963279/log.txt

t/05_utils_ppi.t .............................. ok
===(    3513;6    7/237   7/32   90/156  0/?  0/?  0/?  0/?  0/? )======
#   Failed test 'parse_arg_list: foo( { bar() }, {}, 'blah' )'
#   at t/05_utils.t line 433.
#     Structures begin differing at:
#          $got->[0] = ARRAY(0x4c00278)
#     $expected->[0] = ' { bar() }'
# Looks like you failed 1 test of 156.
t/05_utils.t .................................. �[31mDubious, test returned 1 (wstat 256, 0x100)�[0m
�[31mFailed 1/156 subtests �[0m

...and...

t/16_roundtrip_defaults.t ..................... ok
===(    5688;29   331/2709  1/?  0/?  0/?  0/?  0/?  0/?  0/? )=========
===(    5710;30   353/2709  1/?  0/?  0/?  0/?  0/?  0/4  0/?  0/? )====
#   Failed test 'Test::Perl::Critic for "blib/lib/Perl/Critic/Command.pm"'
#   at /home/travis/perl5/perlbrew/perls/5.22.4/lib/site_perl/5.22.4/Test/Perl/Critic.pm line 121.
# 
#   blib/lib/Perl/Critic/Command.pm: Use "<>" or "<ARGV>" or a prompting module instead of "<STDIN>" at line 190, column 51.  See pages 216,220,221 of PBP.  (Severity: 4, InputOutput::ProhibitExplicitStdin)

@wbraswell is this still an issue?