Subject: | pad fail if not using PadWalker |
Date: | Tue, 27 Aug 2013 11:44:06 +0100 |
To: | bug-Data-Dump-Streamer [...] rt.cpan.org |
From: | Zefram <zefram [...] fysh.org> |
In DDS 2.36, one of the pad tests fails for me if PadWalker is not
installed. The code "$svo->PADLIST->ARRAY" in _get_lexicals() fails, due
to ->PADLIST returning something unexpected. If PadWalker is installed,
that code doesn't run, and the other implementation of _get_lexicals()
works fine.
$ ./Build prereq_report
recommends:
Module Need Have
------------------+--------+----------
Algorithm::Diff 0 1.1902
Compress::Zlib 0 2.062
JSON::XS 0 2.34
MIME::Base64 0 3.14
! PadWalker 0.99 <none>
configure_requires:
Module Need Have
--------------------+---------+----------
ExtUtils::Depends 0 0.304
Module::Build 0 0.4003
perl 5.006 5.18.0
requires:
Module Need Have
---------------------+--------+----------
B 0 1.42
B::Deparse 0 1.20
B::Utils 0 0.21
Data::Dumper 0 2.145
DynaLoader 0 1.18
Exporter 0 5.68
Hash::Util 0 0.16
IO::File 0 1.16
overload 0 1.22
re 0 0.23
strict 0 1.07
Symbol 0 1.07
Text::Abbrev 0 1.02
Text::Balanced 0 2.02
vars 0 1.03
warnings 0 1.18
warnings::register 0 1.02
build_requires:
Module Need Have
---------------------+--------+----------
B::Deparse 0 1.20
base 0 2.18
Carp 0 1.29
Config 0 5.018000
Data::Dumper 0 2.145
Devel::Peek 0 1.11
ExtUtils::CBuilder 0 0.280210
overload 0 1.22
re 0 0.23
strict 0 1.07
Symbol 0 1.07
Test::More 0 0.98
Text::Abbrev 0 1.02
utf8 0 1.10
vars 0 1.03
warnings 0 1.18
$ ./Build test
t/as.t .............. ok
t/blessed.t ......... ok
t/dogpound.t ........ ok
t/dump.t ............ ok
t/filter.t .......... ok
t/globtest.t ........ ok
t/hardrefs.t ........ ok
t/impure_madness.t .. ok
t/lexicals.t ........ #
# PadWalker isn't installed
t/lexicals.t ........ 1/14 # Error:
# Data::Dump::Streamer->Data(@_)->Out() failed dump:
# normalize ( scalar $obj->Data(@_)->Out() )
# Can't locate object method "ARRAY" via package "B::NULL" at /opt/perl-5.18.0/cpan/build/Data-Dump-Streamer-2.36-40x30i/blib/lib/Data/Dump/Streamer.pm line 3701.
# Failed test 'Unimplemented code'
# at t/test_helper.pl line 527.
# Looks like you failed 1 test of 14.
t/lexicals.t ........ Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/14 subtests
t/locked.t .......... ok
t/madness.t ......... ok
t/madness_json.t .... ok
t/madness_w.t ....... ok
t/names.t ........... ok
t/overload.t ........ ok
t/readonly.t ........ ok
t/refaddr.t ......... ok
t/refcount.t ........ ok
t/refelem.t ......... ok
t/reftype.t ......... ok
t/sortkeys.t ........ ok
t/tree.t ............ ok
t/usage.t ........... ok
t/xs_subs.t ......... ok
Test Summary Report
-------------------
t/lexicals.t (Wstat: 256 Tests: 14 Failed: 1)
Failed test: 7
Non-zero exit status: 1
Files=24, Tests=369, 3 wallclock secs ( 0.10 usr 0.02 sys + 2.11 cusr 0.18 csys = 2.41 CPU)
Result: FAIL
Failed 1/24 test programs. 1/369 subtests failed.
$
I suggest that the test suite should run the tests that are affected by
$HasPadWalker twice, one of them with PadWalker artificially disabled,
so that the ability to run without PadWalker will actually be tested.
Or alternatively, make PadWalker a hard dependency, and drop the
!$HasPadWalker code paths.
-zefram