Skip Menu |

This queue is for tickets about the Net-UPS CPAN distribution.

Report information
The Basics
Id: 105214
Status: resolved
Priority: 0/
Queue: Net-UPS

People
Owner: Nobody in particular
Requestors: KENTNL [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.15
Fixed in: 0.16



Subject: Tests fail with corrupted UTF8

Example:

http://www.cpantesters.org/cpan/report/dc8b3d42-bc9d-11e4-95dd-f9a587ef3ddc

t/net-ups-offline.t .... 1/?     
    #   Failed test 'expected request'
    #   at t/lib/Test/Net/UPS/NoNetwork.pm line 29.
Wide character in print at /usr/lib64/perl5/vendor_perl/5.20.1/Test/Builder.pm line 1821.
    # Compared $data->[1]{"AddressValidationRequest"}{"AddressKeyFormat"}{"ConsigneeName"}
    #    got : 'Snowman ☃'
    # expect : 'Snowman â'
 

Subject: Re: [rt.cpan.org #105214] Tests fail with corrupted UTF8
Date: Tue, 16 Jun 2015 20:40:20 +0100
To: bug-Net-UPS [...] rt.cpan.org
From: Gianni Ceccarelli <dakkar [...] thenautilus.net>
I know :( I wrote https://github.com/NET-A-PORTER/Net-UPS/blob/master/t/xml-parsers-check.t to see if I could figure out which combination of versions / parsers / whatever causes the problem, but that test always passes. Do you have any idea to help me diagnose the source of the issue? It only fails for *some* testers :( -- Dakkar - <Mobilis in mobile> GPG public key fingerprint = A071 E618 DD2C 5901 9574 6FE2 40EA 9883 7519 3F88 key id = 0x75193F88 Before Xerox, five carbons were the maximum extension of anybody's ego.
Download signature.asc
application/pgp-signature 181b

Message body not shown because it is not plain text.

I ran the problem test as follows to see what's happening


strace -f -v -o "${T}/tracelog" -e trace=open perl -Ilib t/net-ups-offline.t

Scrubbed the data with sed:

cat /tmp/portage/dev-perl-Net-UPS-0.150.0/temp//tracelog  | grep -v '\-1'  | grep '\.pm' | sed -r 's|^[^"]+"||;s|".*$||' > /tmp/files.txt

 

and then analysed the result to get version data:

(Attachment get_modvers.pl )

And the result is as follows ( Attachment out.txt )

 

Order is "in load order" showing relevant modules and versions where possible. Hopefully this gives some insight to what versions are in play.

 

 

 

Subject: get_modvers.pl
#!/usr/bin/env perl use strict; use warnings; use utf8; use Path::Tiny qw( path ); use Module::Metadata; for my $file ( path('/tmp/files.txt')->lines_raw({ chomp => 1 }) ) { my $fullpath = path($file)->absolute("/tmp/portage/dev-perl-Net-UPS-0.150.0/work/Net-UPS-0.15/"); my $mm = Module::Metadata->new_from_file( "$fullpath", collect_pod => 0 ); if ( not $mm ) { printf "%s\t?\t?\n", $file; next; } my $name = $mm->name(); if ( not $name ) { printf "%s\t?\t?\n", $file; next; } my $version = $mm->version(); if ( not defined $version ) { printf "%s\t%s\t?\n", $file, $name; next; } printf "%s\t%s\t%s\n", $file, $name, $version; }
Subject: out.txt
/usr/lib64/perl5/5.20.2/strict.pm strict 1.08 /usr/lib64/perl5/5.20.2/warnings.pm warnings 1.23 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Most.pm Test::Most 0.31 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Most/Exception.pm Test::Most::Exception 0.31 /usr/lib64/perl5/5.20.2/base.pm base 2.22 /usr/lib64/perl5/5.20.2/vars.pm vars 1.03 /usr/lib64/perl5/5.20.2/warnings/register.pm warnings::register 1.03 /usr/lib64/perl5/5.20.2/Exporter.pm Exporter 5.71 /usr/lib64/perl5/vendor_perl/5.20.1/Exception/Class.pm Exception::Class 1.37 /usr/lib64/perl5/vendor_perl/5.20.1/Exception/Class/Base.pm Exception::Class::Base 1.37 /usr/lib64/perl5/vendor_perl/5.20.1/Class/Data/Inheritable.pm Class::Data::Inheritable 0.08 /usr/lib64/perl5/vendor_perl/5.20.1/Devel/StackTrace.pm Devel::StackTrace 1.30 /usr/lib64/perl5/vendor_perl/5.20.1/Devel/StackTrace/Frame.pm Devel::StackTrace::Frame 1.30 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/File/Spec.pm File::Spec 3.48_01 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/File/Spec/Unix.pm File::Spec::Unix 3.48_01 /usr/lib64/perl5/5.20.2/constant.pm constant 1.31 /usr/lib64/perl5/5.20.2/XSLoader.pm XSLoader 0.17 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/DynaLoader.pm DynaLoader 1.25 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Config.pm Config 5.020002 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Scalar/Util.pm Scalar::Util 1.38 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/List/Util.pm List::Util 1.38 /usr/lib64/perl5/5.20.2/overload.pm overload 1.22 /usr/lib64/perl5/5.20.2/overloading.pm overloading 0.02 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Builder/Module.pm Test::Builder::Module 1.001002 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Builder.pm Test::Builder 1.001002 /usr/lib64/perl5/5.20.2/PerlIO.pm PerlIO 1.09 /usr/lib64/perl5/vendor_perl/5.20.1/Test/More.pm Test::More 1.001002 /usr/lib64/perl5/5.20.2/Exporter/Heavy.pm Exporter::Heavy 5.65 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Time/HiRes.pm Time::HiRes 1.9726 /usr/lib64/perl5/vendor_perl/5.20.2/Data/Dumper/Names.pm Data::Dumper::Names 0.03 /usr/lib64/perl5/vendor_perl/5.20.1/x86_64-linux-thread-multi/Data/Dumper.pm Data::Dumper 2.154 /usr/lib64/perl5/vendor_perl/5.20.1/Carp.pm Carp 1.3301 /usr/lib64/perl5/5.20.2/bytes.pm bytes 1.04 /usr/lib64/perl5/vendor_perl/5.20.1/x86_64-linux-thread-multi/PadWalker.pm PadWalker 1.96 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Exception.pm Test::Exception 0.32 /usr/lib64/perl5/vendor_perl/5.20.1/Sub/Uplevel.pm Sub::Uplevel 0.24 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Warn.pm Test::Warn 0.24 /usr/lib64/perl5/vendor_perl/5.20.1/Tree/DAG_Node.pm Tree::DAG_Node 1.16 /usr/lib64/perl5/vendor_perl/5.20.1/File/Slurp.pm File::Slurp 9999.19 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Fcntl.pm Fcntl 1.11 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/POSIX.pm POSIX 1.38_03 /usr/lib64/perl5/5.20.2/Tie/Hash.pm Tie::Hash 1.05 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Errno.pm Errno 1.20_05 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/re.pm re 0.26 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Differences.pm Test::Differences 0.61 /usr/lib64/perl5/vendor_perl/5.20.1/Text/Diff.pm Text::Diff 1.41 /usr/lib64/perl5/vendor_perl/5.20.1/Algorithm/Diff.pm Algorithm::Diff 1.1902 /usr/lib64/perl5/5.20.2/integer.pm integer 1.01 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep.pm Test::Deep 0.110 /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Cache.pm Test::Deep::Cache ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Cache/Simple.pm Test::Deep::Cache::Simple ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Stack.pm Test::Deep::Stack ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/MM.pm Test::Deep::MM ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/RegexpVersion.pm Test::Deep::RegexpVersion ? /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/lib.pm lib 0.63 t/lib/Test/Net/UPS.pm Test::Net::UPS ? /usr/lib64/perl5/vendor_perl/5.20.2/Data/Printer.pm Data::Printer 0.36 /usr/lib64/perl5/5.20.2/Term/ANSIColor.pm Term::ANSIColor 4.02 /usr/lib64/perl5/vendor_perl/5.20.2/Sort/Naturally.pm Sort::Naturally 1.03 /usr/lib64/perl5/5.20.2/locale.pm locale 1.03 /usr/lib64/perl5/vendor_perl/5.20.2/Clone/PP.pm Clone::PP 1.06 /usr/lib64/perl5/5.20.2/if.pm if 0.0603 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Hash/Util/FieldHash.pm Hash::Util::FieldHash 1.15 /usr/lib64/perl5/vendor_perl/5.20.1/File/HomeDir.pm File::HomeDir 1.00 /usr/lib64/perl5/vendor_perl/5.20.1/File/Which.pm File::Which 1.09 /usr/lib64/perl5/vendor_perl/5.20.1/File/HomeDir/FreeDesktop.pm File::HomeDir::FreeDesktop 1.00 /usr/lib64/perl5/vendor_perl/5.20.1/File/HomeDir/Unix.pm File::HomeDir::Unix 1.00 /usr/lib64/perl5/vendor_perl/5.20.1/File/HomeDir/Driver.pm File::HomeDir::Driver 1.00 /usr/lib64/perl5/5.20.2/version.pm version 0.9909 /usr/lib64/perl5/5.20.2/version/regex.pm version::regex 0.9909 lib/Net/UPS/Package.pm Net::UPS::Package 0.15 /usr/lib64/perl5/vendor_perl/5.20.1/XML/Simple.pm XML::Simple 2.20 /usr/lib64/perl5/5.20.2/utf8.pm utf8 1.13_01 /usr/lib64/perl5/5.20.2/Class/Struct.pm Class::Struct 0.65 t/lib/Test/Net/UPS/Factory.pm Test::Net::UPS::Factory ? lib/Net/UPS.pm Net::UPS 0.15 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Encode.pm Encode 2.60 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Encode/Alias.pm Encode::Alias 2.18 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Encode/Config.pm Encode::Config 2.05 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Encode/Encoding.pm Encode::Encoding 2.07 /usr/lib64/perl5/vendor_perl/5.20.1/LWP/UserAgent.pm LWP::UserAgent 6.05 /usr/lib64/perl5/vendor_perl/5.20.1/HTTP/Request.pm HTTP::Request 6.00 /usr/lib64/perl5/vendor_perl/5.20.1/HTTP/Message.pm HTTP::Message 6.06 /usr/lib64/perl5/vendor_perl/5.20.1/HTTP/Headers.pm HTTP::Headers 6.05 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Storable.pm Storable 2.49_01 /usr/lib64/perl5/vendor_perl/5.20.1/Log/Agent.pm Log::Agent 0.307 /usr/lib64/perl5/5.20.2/AutoLoader.pm AutoLoader 5.74 /usr/lib64/perl5/vendor_perl/5.20.1/Log/Agent/Priorities.pm Log::Agent::Priorities ? /usr/lib64/perl5/vendor_perl/5.20.1/Log/Agent/Formatting.pm Log::Agent::Formatting ? /usr/lib64/perl5/vendor_perl/5.20.1/Log/Agent/Message.pm Log::Agent::Message ? /usr/lib64/perl5/vendor_perl/5.20.2/URI.pm URI 1.67 /usr/lib64/perl5/vendor_perl/5.20.2/URI/Escape.pm URI::Escape 3.31 /usr/lib64/perl5/vendor_perl/5.20.1/HTTP/Response.pm HTTP::Response 6.04 /usr/lib64/perl5/vendor_perl/5.20.1/HTTP/Status.pm HTTP::Status 6.03 /usr/lib64/perl5/vendor_perl/5.20.1/HTTP/Date.pm HTTP::Date 6.02 /usr/lib64/perl5/5.20.2/Time/Local.pm Time::Local 1.2300 /usr/lib64/perl5/vendor_perl/5.20.1/LWP.pm LWP 6.05 /usr/lib64/perl5/vendor_perl/5.20.1/LWP/Protocol.pm LWP::Protocol 6.00 /usr/lib64/perl5/vendor_perl/5.20.1/LWP/MemberMixin.pm LWP::MemberMixin ? lib/Net/UPS/ErrorHandler.pm Net::UPS::ErrorHandler 0.15 lib/Net/UPS/Rate.pm Net::UPS::Rate 0.15 lib/Net/UPS/Service.pm Net::UPS::Service 0.15 lib/Net/UPS/Address.pm Net::UPS::Address 0.15 /usr/lib64/perl5/vendor_perl/5.20.1/IO/Socket/SSL.pm IO::Socket::SSL 2.012 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/IO/Socket.pm IO::Socket 1.38 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/IO/Handle.pm IO::Handle 1.35 /usr/lib64/perl5/5.20.2/Symbol.pm Symbol 1.07 /usr/lib64/perl5/5.20.2/SelectSaver.pm SelectSaver 1.02 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/IO.pm IO 1.31 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Socket.pm Socket 2.013 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/IO/Socket/INET.pm IO::Socket::INET 1.35 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/IO/Socket/UNIX.pm IO::Socket::UNIX 1.26 /usr/lib64/perl5/vendor_perl/5.20.1/x86_64-linux-thread-multi/Net/SSLeay.pm Net::SSLeay 1.65 /usr/lib64/perl5/vendor_perl/5.20.1/IO/Socket/SSL/PublicSuffix.pm IO::Socket::SSL::PublicSuffix ? /usr/lib64/perl5/vendor_perl/5.20.2/URI/_idna.pm URI::_idna ? /usr/lib64/perl5/vendor_perl/5.20.2/URI/_punycode.pm URI::_punycode 1.67 /usr/lib64/perl5/5.20.2/IO/Socket/IP.pm IO::Socket::IP 0.29 t/lib/Test/Net/UPS/NoNetwork.pm Test::Net::UPS::NoNetwork ? t/lib/Test/Net/UPS/Tracing.pm Test::Net::UPS::Tracing ? /usr/lib64/perl5/vendor_perl/5.20.2/File/Temp.pm File::Temp 0.2304 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/Cwd.pm Cwd 3.48_01 /usr/lib64/perl5/5.20.2/File/Path.pm File::Path 2.09 /usr/lib64/perl5/5.20.2/File/Basename.pm File::Basename 2.85 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/IO/Seekable.pm IO::Seekable 1.10 /usr/lib64/perl5/5.20.2/parent.pm parent 0.228 /usr/lib64/perl5/vendor_perl/5.20.1/Carp/Heavy.pm Carp::Heavy 1.3301 /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX.pm XML::SAX 0.99 /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/ParserFactory.pm XML::SAX::ParserFactory 1.01 /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/Exception.pm XML::SAX::Exception 1.08 /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl.pm XML::SAX::PurePerl 0.99 /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/Productions.pm XML::SAX::PurePerl::Productions ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/Reader.pm XML::SAX::PurePerl::Reader ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/Reader/URI.pm XML::SAX::PurePerl::Reader::URI ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/Reader/Stream.pm XML::SAX::PurePerl::Reader::Stream ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/Reader/String.pm XML::SAX::PurePerl::Reader::String ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/Reader/UnicodeExt.pm ? ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/EncodingDetect.pm ? ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/DocType.pm ? ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/DTDDecls.pm ? ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/XMLDecl.pm ? ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/DocumentLocator.pm XML::SAX::DocumentLocator ? /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/Base.pm XML::SAX::Base 1.08 /usr/lib64/perl5/vendor_perl/5.20.1/XML/NamespaceSupport.pm XML::NamespaceSupport 1.11 /usr/lib64/perl5/5.20.2/x86_64-linux-thread-multi/IO/File.pm IO::File 1.16 /usr/lib64/perl5/vendor_perl/5.20.1/XML/SAX/PurePerl/UnicodeExt.pm ? ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Isa.pm Test::Deep::Isa ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Cmp.pm Test::Deep::Cmp ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Methods.pm Test::Deep::Methods ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/All.pm Test::Deep::All ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Number.pm Test::Deep::Number ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Array.pm Test::Deep::Array ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Ref.pm Test::Deep::Ref ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/ArrayLength.pm Test::Deep::ArrayLength ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/RefType.pm Test::Deep::RefType ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Shallow.pm Test::Deep::Shallow ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/ArrayLengthOnly.pm Test::Deep::ArrayLengthOnly ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Blessed.pm Test::Deep::Blessed ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/ArrayElementsOnly.pm Test::Deep::ArrayElementsOnly ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Hash.pm Test::Deep::Hash ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/HashKeys.pm Test::Deep::HashKeys ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/HashKeysOnly.pm Test::Deep::HashKeysOnly ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/HashElements.pm Test::Deep::HashElements ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Set.pm Test::Deep::Set ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/ArrayEach.pm Test::Deep::ArrayEach ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/Regexp.pm Test::Deep::Regexp ? /usr/lib64/perl5/vendor_perl/5.20.1/Test/Deep/RegexpMatches.pm Test::Deep::RegexpMatches ?