Subject: | Test suite error with Perl 5.6.x |
It appears that the syntax used in t/linerep.t is incompatible with Perl 5.6. The attached
error report (AH-0.80-perl56-make_test.txt) shows the complete make test result; the
specific error is:
Invalid SCALAR attribute: SArgs(grumpf) at t/linerep.t line 28
BEGIN failed--compilation aborted at t/linerep.t line 28.
It appears Perl 5.6 disallows attributes to be declared until *after* the associated handler
subroutine has been declared, in the order that the file is defined. I verified this by simply
moving the 'my $bar = ... ' line after the attribute handler sub declaration and commenting
out the one test that checks \$bar). This seems to be a consistent issue across all Perl 5.6.x
versions (according to CPAN testers).
In any case, the intended test works fine if evaluation is explicitly deferred until after the
subroutine is declared. The attached patch implements this change: Attribute-Handlers-
0.80.perl56.patch.
Module test suite with the patch passes fine for me on Perl 5.6.1, 5.8.8, and 5.10.0.
Subject: | Attribute-Handlers-0.80.perl56.patch |
diff -ru Attribute-Handlers-0.80/t/linerep.t Attribute-Handlers-0.80.perl56/t/linerep.t
--- Attribute-Handlers-0.80/t/linerep.t Sat Oct 25 04:53:18 2008
+++ Attribute-Handlers-0.80.perl56/t/linerep.t Sun Nov 9 13:12:21 2008
@@ -25,13 +25,17 @@
sub foo :Args(bar) {}
-my $bar :SArgs(grumpf);
+my $ref;
+sub myref { $ref = shift; }
+my $b;
+eval "my \$bar :SArgs(grumpf); \$b = \\\$bar";
+is( $b, $ref, 'referent' );
sub SArgs : ATTR(SCALAR) {
my ($package, $symbol, $referent, $attr, $data, $phase, $filename, $linenum) = @_;
is( $package, 'main', 'package' );
is( $symbol, 'LEXICAL', 'symbol' );
- is( $referent, \$bar, 'referent' );
+ myref($referent);
is( $attr, 'SArgs', 'attr' );
is( ref $data, 'ARRAY', 'data' );
is( $data->[0], 'grumpf', 'data' );
Subject: | perl_platform.txt |
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
Platform:
osname=linux, osvers=2.4.17-0.13smp, archname=i386-linux
uname='linux daffy.perf.redhat.com 2.4.17-0.13smp #1 smp fri feb 1 10:30:48 est 2002 i686 unknown '
config_args='-des -Doptimize=-O2 -march=i386 -mcpu=i686 -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dcccdlflags=-fPIC -Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Uusethreads -Uuseithreads -Uuselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Di_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=undef usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
Compiler:
cc='gcc', ccflags ='-fno-strict-aliasing -I/usr/local/include',
optimize='-O2 -march=i386 -mcpu=i686',
cppflags='-fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='2.96 20000731 (Red Hat Linux 7.2 2.96-109)', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=4
alignbytes=4, usemymalloc=n, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -ldl -lm -lc -lcrypt -lutil
perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil
libc=/lib/libc-2.2.5.so, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options:
Built under linux
Compiled at Apr 1 2002 12:23:22
@INC:
/usr/lib/perl5/5.6.1/i386-linux
/usr/lib/perl5/5.6.1
/usr/lib/perl5/site_perl/5.6.1/i386-linux
/usr/lib/perl5/site_perl/5.6.1
/usr/lib/perl5/site_perl/5.6.0
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.6.1/i386-linux
/usr/lib/perl5/vendor_perl/5.6.1
/usr/lib/perl5/vendor_perl
.
Subject: | AH-0.80-perl56-make_test.txt |
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib/lib', 'blib/arch')" t/*.t
t/constants.......
1..1
ok 1 - If we got here, CHECK didn't fail
ok
t/data_convert....
1..8
ok 1 - test1
ok 2 - test2
ok 3 - test3
ok 4 - test4
ok 5 - test5
ok 6 - test6
ok 7 - test7
ok 8 - test8
ok
t/linerep.........
1..18
Invalid SCALAR attribute: SArgs(grumpf) at t/linerep.t line 28
BEGIN failed--compilation aborted at t/linerep.t line 28.
ok 1 - package
ok 2 - symbol
ok 3 - referent
ok 4 - attr
ok 5 - data
ok 6 - data
ok 7 - phase
ok 8 - filename
ok 9 - linenum
Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 9/18 subtests
t/multi...........
1..54
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
ok 16
ok 17
ok 18
ok 19
ok 20
ok 21
ok 22
ok 23
ok 24
ok 25
ok 26
ok 27
ok 28
ok 29
ok 30
ok 31
ok 32
ok 33
ok 34
ok 35
ok 36
ok 37
ok 38
ok 39
ok 40
ok 41
ok 42
ok 43
ok 44
ok 45
ok 46 # SKIP lexicals are not runtime prior to 5.8
ok 47 # SKIP does not work with perl prior to 5.8
ok 48
ok 49
ok 50
ok 51
ok 52 # SKIP , no difference between lexical handlers and normal handlers prior to 5.8
ok 53 # phase variance
ok 54
ok
Test Summary Report
-------------------
t/linerep (Wstat: 65280 Tests: 9 Failed: 0)
Non-zero exit status: 255
Parse errors: Bad plan. You planned 18 tests but ran 9.
Files=4, Tests=72, 0 wallclock secs ( 0.00 usr 0.02 sys + 0.01 cusr 0.14 csys = 0.17 CPU)
Result: FAIL
Failed 1/4 test programs. 0/72 subtests failed.
make: *** [test_dynamic] Error 11