Subject: | t/libravatar.t test failure |
I am currently getting a test failure in t/libravatar.t due to the
random number generation. I see the srand(42), but for whatever reason,
at least in my perl, I am not getting the values listed in the comments.
Here is an example run of the test:
t\libravatar.t .. 1/? Use of uninitialized value $target in pattern
match (m//) at
C:\strawberry\cpan\build\Gravatar-URL-1.05-LveUNU\lib/Libravatar/URL.pm
line 203.
Use of uninitialized value $port in pattern match (m//) at
C:\strawberry\cpan\build\Gravatar-URL-1.05-LveUNU\lib/Libravatar/URL.pm
line 206.
# Failed test 'avatars1.example.com'
# at t\libravatar.t line 237.
# Structures begin differing at:
# $got->[0] = 'avatars4.example.com'
# $expected->[0] = 'avatars1.example.com'
# Failed test 'avatars10.example.com'
# at t\libravatar.t line 237.
# Structures begin differing at:
# $got->[0] = 'avatars1.example.com'
# $expected->[0] = 'avatars10.example.com'
# Looks like you failed 2 tests of 38.
t\libravatar.t .. Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/38 subtests
Test Summary Report
-------------------
t\libravatar.t (Wstat: 512 Tests: 38 Failed: 2)
Failed tests: 35, 38
Non-zero exit status: 2
Files=1, Tests=38, 0 wallclock secs ( 0.06 usr + 0.00 sys = 0.06 CPU)
Result: FAIL
I am, however, able to pass the test by changing the seed value from 42
to 127759. I came up with this number using brute force:
use v5.10;
use strict;
use warnings;
my @expect = (49, 0, 1, 40);
my @max = (67, 2, 11, 97);
my $seed = -1;
sub rand_pass {
srand $_[0];
for (my $i = 0; $i < @expect; $i++) {
if ($expect[$i] != int rand $max[$i]) {
return 0;
}
}
return 1;
}
1 until (rand_pass(++$seed));
say 'Seed: ' . ($seed);
Anyhow, I'm not sure what the cause would be. It is possible there is
something wrong with my perl. At the end here, I am including my perl
version. If other platforms are passing the tests with 42 and others or
not, may I suggest you modify the tests to call srand() before each call
to srv_hostname() (perhaps having the srand() value in @srv_tests).
Summary of my perl5 (revision 5 version 12 subversion 3) configuration:
Platform:
osname=MSWin32, osvers=6.1, archname=MSWin32-x64-multi-thread
uname='Win32 strawberryperl 5.12.3.0 #1 Sun May 15 09:43:50 2011 x64'
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='gcc', ccflags =' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DWIN64
-DCONSERVATIVE
-DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
-fno-strict-aliasing -mms-bitfields -DPERL_MSVCRT_READFIX',
optimize='-s -O2',
cppflags='-DWIN32'
ccversion='', gccversion='4.4.3', gccosandvers=''
intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='long
long', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='g++', ldflags ='-s -L"C:\strawberry\perl\lib\CORE"
-L"C:\strawberry\c\lib"'
libpth=C:\strawberry\c\lib C:\strawberry\c\x86_64-w64-mingw32\lib
libs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32
-ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr
-lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
perllibs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool
-lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid
-lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
libc=, so=dll, useshrplib=true, libperl=libperl512.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-mdll -s -L"C:\strawberry\perl\lib\CORE"
-L"C:\strawberry\c\lib"'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
PERL_MALLOC_WRAP PL_OP_SLAB_ALLOC USE_64_BIT_INT
USE_ITHREADS USE_LARGE_FILES USE_PERLIO
USE_PERL_ATOF
USE_SITECUSTOMIZE
Built under MSWin32
Compiled at May 15 2011 09:52:35
%ENV:
PERL5_CPANPLUS_IS_RUNNING="5240"
PERL5_CPAN_IS_RUNNING="5240"
PERL_JSON_BACKEND="JSON::XS"
PERL_YAML_BACKEND="YAML"
@INC:
C:/strawberry/perl/site/lib
C:/strawberry/perl/vendor/lib
C:/strawberry/perl/lib
.