[perl-TAP-Formatter-JUnit] Fix FTBFS due to hash randomization (#992724)
Paul Howarth
pghmcfc at fedoraproject.org
Mon Aug 12 11:55:13 UTC 2013
commit 750e85b003e173a797f9d088be20114208cf1666
Author: Paul Howarth <paul at city-fan.org>
Date: Mon Aug 12 12:49:25 2013 +0100
Fix FTBFS due to hash randomization (#992724)
- Address test failures due to hash order randomization (CPAN RT#81552)
- Don't need to remove empty directories from the buildroot
- Drop %defattr, redundant since rpm 4.4
TAP-Formatter-JUnit-0.09-hashorder.patch | 100 ++++++++++++++++++++++++++++++
perl-TAP-Formatter-JUnit.spec | 16 ++++-
2 files changed, 112 insertions(+), 4 deletions(-)
---
diff --git a/TAP-Formatter-JUnit-0.09-hashorder.patch b/TAP-Formatter-JUnit-0.09-hashorder.patch
new file mode 100644
index 0000000..895c931
--- /dev/null
+++ b/TAP-Formatter-JUnit-0.09-hashorder.patch
@@ -0,0 +1,100 @@
+This patch addresses https://rt.cpan.org/Public/Bug/Display.html?id=81552
+
+Strictly speaking, this is a test suite issue since the generated XML
+remains valid, but some attributes are output in a different order than
+expected by the test suite.
+
+However, since I can't think of any simple way to make the tests more
+forgiving of the order of the attributes in the XML, I've tweaked the
+code to use Tie::IxHash to ensure that the generated XML has the
+attributes in the same order as the tests expect them.
+
+--- lib/TAP/Formatter/JUnit/Session.pm
++++ lib/TAP/Formatter/JUnit/Session.pm
+@@ -10,6 +10,7 @@
+ use File::Path qw(mkpath);
+ use IO::File;
+ use TAP::Formatter::JUnit::Result;
++use Tie::IxHash;
+
+ has 'testcases' => (
+ is => 'rw',
+@@ -104,10 +105,12 @@
+ if ($timer_enabled) {
+ unless ($result->is_test) {
+ my $duration = $result->time - $t_start;
+- my $case = $xml->testcase( {
+- 'name' => _squeaky_clean('(init)'),
++ tie my %case_attrs, 'Tie::IxHash';
++ %case_attrs = (
+ 'time' => $duration,
+- } );
++ 'name' => _squeaky_clean('(init)'),
++ );
++ my $case = $xml->testcase( \%case_attrs );
+ $self->add_testcase($case);
+ $t_last_test = $result->time;
+ }
+@@ -136,22 +139,23 @@
+ if ($bogosity) {
+ my $cdata = $self->_cdata($content);
+ my $level = $bogosity->{level};
+- $failure = $xml->$level( {
++ tie my %error_attrs, 'Tie::IxHash';
++ %error_attrs = (
+ type => $bogosity->{type},
+ message => $bogosity->{message},
+- }, $cdata );
++ );
++ $failure = $xml->$level( \%error_attrs, $cdata );
+ }
+
+ # add this test to the XML stream
+- my $case = $xml->testcase(
+- {
+- 'name' => _get_testcase_name($result),
++ tie my %case_attrs, 'Tie::IxHash';
++ %case_attrs = (
+ (
+ $timer_enabled ? ('time' => $duration) : ()
+ ),
+- },
+- $failure,
++ 'name' => _get_testcase_name($result),
+ );
++ my $case = $xml->testcase( \%case_attrs, $failure, );
+ $self->add_testcase($case);
+
+ # update time of last test seen
+@@ -162,10 +166,12 @@
+ # track time for teardown, if needed
+ if ($timer_enabled) {
+ my $duration = $self->parser->end_time - $queue->[-1]->time;
+- my $case = $xml->testcase( {
+- 'name' => _squeaky_clean('(teardown)'),
++ tie my %case_attrs, 'Tie::IxHash';
++ %case_attrs = (
+ 'time' => $duration,
+- } );
++ 'name' => _squeaky_clean('(teardown)'),
++ );
++ my $case = $xml->testcase( \%case_attrs );
+ $self->add_testcase($case);
+ }
+
+@@ -225,11 +231,12 @@
+ }
+
+ my @tests = @{$self->testcases()};
+- my %attrs = (
+- 'name' => _get_testsuite_name($self),
+- 'tests' => $testsrun,
++ tie my %attrs, 'Tie::IxHash';
++ %attrs = (
+ 'failures' => $failures,
+ 'errors' => $num_errors,
++ 'tests' => $testsrun,
++ 'name' => _get_testsuite_name($self),
+ (
+ $timer_enabled ? ('time' => $time) : ()
+ ),
diff --git a/perl-TAP-Formatter-JUnit.spec b/perl-TAP-Formatter-JUnit.spec
index 899147a..b02da10 100644
--- a/perl-TAP-Formatter-JUnit.spec
+++ b/perl-TAP-Formatter-JUnit.spec
@@ -1,11 +1,12 @@
Name: perl-TAP-Formatter-JUnit
Version: 0.09
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Harness output delegate for JUnit output
License: GPL+ or Artistic
Group: Development/Libraries
URL: http://search.cpan.org/dist/TAP-Formatter-JUnit/
Source0: http://www.cpan.org/modules/by-module/TAP/TAP-Formatter-JUnit-%{version}.tar.gz
+Patch0: TAP-Formatter-JUnit-0.09-hashorder.patch
BuildArch: noarch
BuildRequires: perl(Moose)
BuildRequires: perl(MooseX::NonMoose)
@@ -13,6 +14,7 @@ BuildRequires: perl(File::Slurp)
BuildRequires: perl(IO::Scalar)
BuildRequires: perl(Module::Build)
BuildRequires: perl(TAP::Harness) >= 3.12
+BuildRequires: perl(Tie::IxHash)
BuildRequires: perl(Test::Differences)
BuildRequires: perl(Test::More)
BuildRequires: perl(XML::Generator)
@@ -25,21 +27,22 @@ for Test::Harness.
%prep
%setup -q -n TAP-Formatter-JUnit-%{version}
+# Address test failures due to hash order randomization
+# https://rt.cpan.org/Public/Bug/Display.html?id=81552
+%patch0
+
%build
%{__perl} Build.PL installdirs=vendor
./Build
%install
./Build install destdir=$RPM_BUILD_ROOT create_packlist=0
-find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
-
%{_fixperms} $RPM_BUILD_ROOT/*
%check
./Build test
%files
-%defattr(-,root,root,-)
%doc Changes README
%{_bindir}/tap2junit
%{perl_vendorlib}/*
@@ -47,6 +50,11 @@ find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
%{_mandir}/man3/*
%changelog
+* Mon Aug 12 2013 Paul Howarth <paul at city-fan.org> - 0.09-7
+- Address test failures due to hash order randomization (CPAN RT#81552)
+- Don't need to remove empty directories from the buildroot
+- Drop %%defattr, redundant since rpm 4.4
+
* Sun Aug 04 2013 Petr Pisar <ppisar at redhat.com> - 0.09-6
- Perl 5.18 rebuild
More information about the scm-commits
mailing list