tachyon has asked for the wisdom of the Perl Monks concerning the following question:
I need the assistance of someone with a sun-solaris system. A module I wrote (CGI::Simple) fails 1.5% of its tests under solaris. This does not occur on Win32, cygwin, Mac, Redhat, Mandrake, or Free BSD.
I don't have access to a solaris system so I need is someone to download the module and do this:
%tar -zxvf Cgi-Simple-0.05.tar.gz
%cd Cgi-Simple-0.05
%perl Makefile.PL
%make
%make test
This should show errors like so
PERL_DL_NONLAZY=1 /usr/local/perl/bin/perl "-MExtUtils::Command::MM" "
+-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/cookie......ok
t/function....ok
t/request.....ok
t/simple......FAILED tests 68, 76-77, 81, 89-90, 205
Failed 7/330 tests, 97.88% okay
t/standard....FAILED tests 69, 77-78, 82, 185
Failed 5/303 tests, 98.35% okay
t/util........ok
Failed Test Stat Wstat Total Fail Failed List of Failed
----------------------------------------------------------------------
+---------
t/simple.t 330 7 2.12% 68 76-77 81 89-90 205
t/standard.t 303 5 1.65% 69 77-78 82 185
Failed 2/6 test scripts, 66.67% okay. 12/839 subtests failed, 98.57% o
+kay.
Assuming this to be the case on your system I just need the two problem test scripts run outside the harness which will enable the full debugging mode to output to STDOUT so I just need:
%cd t
%perl simple.t >dump.txt
%perl standard.t >>dump.txt
The text file will contain the debug output and this is what I need. Can anyone spare 5 minutes to help me out? I have emailed the tester but have yet to recieve a reply.
cheers
tachyon jfreeman@tassie.net.au
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
Re: Need help with module problem specific to sun-solaris
by tommyw (Hermit) on Nov 08, 2002 at 11:31 UTC
|
It all works for me, I'm afraid...
ptiw@duet Cgi-Simple-0.05$ make
cp Simple.pm blib/lib/CGI/Simple.pm
cp Simple/Util.pm blib/lib/CGI/Simple/Util.pm
cp Simple/Standard.pm blib/lib/CGI/Simple/Standard.pm
cp Simple/Cookie.pm blib/lib/CGI/Simple/Cookie.pm
ptiw@duet Cgi-Simple-0.05$ make test
PERL_DL_NONLAZY=1 /local/share/oed/extern/bin/perl "-MExtUtils::Comman
+d::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/cookie......ok
t/function....ok
t/request.....ok
t/simple......ok
t/standard....ok
t/util........ok
All tests successful.
Files=6, Tests=839, 5 wallclock secs ( 2.48 cusr + 0.96 csys = 3.44
+ CPU)
That's on solaris 2.8, with perl 5.6.1.
--
Tommy
Too stupid to live.
Too stubborn to die.
update (broquaint): changed <pre> to <code> | [reply] [d/l] |
|
| [reply] |
Re: Need help with module problem specific to sun-solaris
by grinder (Bishop) on Nov 08, 2002 at 11:58 UTC
|
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/usr/lib/perl
+5/5.6.1/sun4-solaris -I/usr/lib/perl5/5.6.1 -e 'use Test::Harness qw(
+&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t
t/cookie............ok
+
t/function..........ok
+
t/request...........ok
+
t/simple............ok
+
t/standard..........ok
+
t/util..............ok
+
All tests successful.
Files=6, Tests=839, 13 wallclock secs ( 3.52 cusr + 0.31 csys = 3.83
+ CPU)
/usr/ccs/bin/make test -- OK
Information about Perl:
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuratio
+n:
Platform:
osname=solaris, osvers=2.6, archname=sun4-solaris
uname='sunos ouessant 5.6 generic_105181-31 sun4u sparc sunw,ultra
+-4 '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef usemultipl
+icity=undef
useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
Compiler:
cc='gcc', ccflags ='-I/usr/local/include -D_LARGEFILE_SOURCE -D_FI
+LE_OFFSET_BITS=64',
optimize='-O',
cppflags='-I/usr/local/include'
ccversion='', gccversion='2.8.1', gccosandvers='solaris2.6'
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=1
+6
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
+ lseeksize=8
alignbytes=8, usemymalloc=y, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib '
libpth=/usr/local/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: USE_LARGE_FILES
Is the error with 5.6.0? I utterly failed to install cpanplus on 5.6.0, which was why I finally installed 5.6.1 a few months ago (and yes, upgrading fixed the problem). The reason for failure was deep inside LWP::Request. Does that set off warning bells? Either that, or maybe you fixed the error without realising it :)
print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u' | [reply] [d/l] [select] |
Re: Need help with module problem specific to sun-solaris
by tachyon (Chancellor) on Nov 08, 2002 at 12:58 UTC
|
Hmm even more confusing....
Most of the tests that fail are in the form
ok( (join' ',@av), 'foo bar' ); #68
so I presume the return order is probably wrong but unless I can find a system that will reproduce the errors.... Perhaps it is specific to the version of perl rather than the OS
Here is the CPAN tester dump
| [reply] [d/l] [select] |
Re: Need help with module problem specific to sun-solaris
by erasei (Pilgrim) on Nov 08, 2002 at 14:23 UTC
|
Solaris 2.8
Perl 5.005_03, failed cookie test with a "Can't find CGI::Util.pm" error message, yet my "kit is complete".
Perl 5.8, failed both simple and standard, just like your example, both with an error "Can't locate CGI/Simple.pm" and "CGI/Simple/Standard.pm" in @INC (paths follow).
Both simple and standard failed on line 9, the "use Simple" line.
Feel free to contact me off site at erasei@erasei.com | [reply] |
|
use lib qw(t/lib blib/lib blib/arch);
This is the build library made by make after you run %perl Makefile.PL
%make
I suspect you may have just untargzipped the module without performing the make step (you must have done perl Makefile.PL as this is when you get the kit complete message). Without running make there will be no blib and thus the inability of perl to find the module in @INC.
If you did perform the make step I would be very interested to know what is going on!
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
| [reply] [d/l] [select] |
|
Yes, I performed the correct steps, and installed it just like I always do, namely:
tar -zxvf Cgi-Simple-0.05.tar.gz
cd Cgi-Simple-0.05/
perl Makefile.PL
make
make test
I just tried it again just to be sure, and it did the same thing again, so I am sure I did the same thing last week. I'd be happy to send you any output you need, just let me know. | [reply] [d/l] |
|
|
Re: Need help with module problem specific to sun-solaris
by Jaap (Curate) on Nov 08, 2002 at 13:13 UTC
|
Here it succeeded on Solaris 8 with Perl 5.6.0 | [reply] |
Re: Need help with module problem specific to sun-solaris
by strider corinth (Friar) on Nov 08, 2002 at 17:42 UTC
|
I ran the tests on my Linux from Scratch box, just to see what I got. I'm running Linux 2.4.19 on a P4. The results looked just like yours:
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_h
+arness(0, 'blib/lib', 'blib/arch')" t/*.t
t/cookie......ok
+
t/function....ok
+
t/request.....ok
+
t/simple......FAILED tests 68, 76-77, 81, 89-90, 205
+
Failed 7/330 tests, 97.88% okay
t/standard....FAILED tests 69, 77-78, 82, 185
+
Failed 5/303 tests, 98.35% okay
t/util........ok
+
Failed Test Stat Wstat Total Fail Failed List of Failed
----------------------------------------------------------------------
+---------
t/simple.t 330 7 2.12% 68 76-77 81 89-90 205
t/standard.t 303 5 1.65% 69 77-78 82 185
Failed 2/6 test scripts, 66.67% okay. 12/839 subtests failed, 98.57% o
+kay.
The info that isn't summarized above follows. I've emailed you the dump.txt file as well, but thought for discussion's sake that I should post this here:
| [reply] [d/l] [select] |
|
push @{$self->{'.parameters'}}, $param;
@.parameters is used to remeber the supplied order. In the test scripts the problem arises thusly:
# new() hash constructor
print "Testing: new() hash constructor\n" if $debug;
$q = new CGI::Simple( { 'foo'=>'1', 'bar'=>[2,3,4] } );
@av = $q->param;
ok( (join' ',@av), 'foo bar' ); #68
This is the code for the first test that fails. Evidently on certain versions of perl/OS the bucket architecture changes so that when the hash ref is passed in some cases this code:
elsif ( (ref $init) =~ m/HASH/i ) { # initialize from param hash
for my $param( keys %{$init} ) {
$self->_add_param( $param, $init->{$param} );
}
}
returns the keys in a different order. As a result they are pushed into @.parameters in a different order and returned in a different order. Adding a reverse sort at this point will fix the tests BUT as this is exactly the same method CGI uses break concurrence.
Rather than break this concurrence I will modify the test to reflect the two possible return cases. For all intents and purposes it is unlikey to make any real world difference.
Thanks very much for your time
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
| [reply] [d/l] [select] |
Re: Need help with module problem specific to sun-solaris
by vek (Prior) on Nov 08, 2002 at 13:30 UTC
|
tachyon - worked fine for me too - Solaris 2.8 - Perl 5.6.1.
--
vek
-- | [reply] |
Re: Need help with module problem specific to sun-solaris
by jlongino (Parson) on Nov 08, 2002 at 16:28 UTC
|
Summary for my boxes:
- Solaris 2.6, Perl 5.6.1 ++OK
- Solaris 2.7, Perl 5.6.0 ++OK
- Solaris 2.8, Perl 5.6.0 --Errors
- Solaris 2.7, Perl 5.005_02 --Errors
| [reply] [d/l] [select] |
|
Oops, much egg on face for me. You do not have a full version of CGI.pm installed which has revealed an error in my test scripts. I had been calling CGI::Util instead of CGI::Simple::Util in this test script. As the APIs are identical this does not show up if you have CGI::Util installed (usual case). Fortunately changing the line
# use CGI::Util qw(escape unescape); # Oops :o/
# I actually meant this....
use CGI::Simple::Util qw(escape unescape);
should fix the problem.
Thanks very much for your time.
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
| [reply] [d/l] |
|
|