[perl-Test-Mojibake] Initial import (perl-Test-Mojibake-0.3-2)
Paul Howarth
pghmcfc at fedoraproject.org
Fri Aug 12 14:10:22 UTC 2011
commit 43d4f14ea49c89102508d61f443de0203f44090c
Author: Paul Howarth <paul at city-fan.org>
Date: Fri Aug 12 14:52:55 2011 +0100
Initial import (perl-Test-Mojibake-0.3-2)
Many modern text editors automatically save files using UTF-8 codification.
However, the perl interpreter does not expect it by default. Whilst this does
not represent a big deal on (most) backend-oriented programs, Web framework
(Catalyst, Mojolicious) based applications will suffer so-called Mojibake
(literally: "unintelligible sequence of characters"). Even worse: if an editor
saves BOM (Byte Order Mark, U+FEFF character in Unicode) at the start of a
script with the executable bit set (on Unix systems), it won't execute at all,
due to shebang corruption.
Avoiding codification problems is quite simple:
* Always use utf8/use common::sense when saving source as UTF-8
* Always specify =encoding utf8 when saving POD as UTF-8
* Do neither of above when saving as ISO-8859-1
* Never save BOM (not that it's wrong; just avoid it as you'll barely
notice its presence when in trouble)
However, if you find yourself upgrading old code to use UTF-8 or trying to
standardize a big project with many developers, each one using a different
platform/editor, reviewing all files manually can be quite painful, especially
in cases where some files have multiple encodings (note: it all started when I
realized that gedit and derivatives are unable to open files with character
conversion tables).
Enter the Test::Mojibake ;)
.gitignore | 1 +
Test-Mojibake-0.3-old-Test::More.patch | 51 +++++++++++
Test-Mojibake-0.3-old-eu::mm.patch | 30 +++++++
perl-Test-Mojibake.spec | 148 ++++++++++++++++++++++++++++++++
sources | 1 +
5 files changed, 231 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..a59e0cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/Test-Mojibake-[0-9.]*.tar.gz
diff --git a/Test-Mojibake-0.3-old-Test::More.patch b/Test-Mojibake-0.3-old-Test::More.patch
new file mode 100644
index 0000000..deea6fe
--- /dev/null
+++ b/Test-Mojibake-0.3-old-Test::More.patch
@@ -0,0 +1,51 @@
+--- Test-Mojibake-0.3/t/06-pp-vs-xs.t
++++ Test-Mojibake-0.3/t/06-pp-vs-xs.t
+@@ -1,7 +1,7 @@
+ #!perl -T
+ use strict;
+
+-use Test::More;
++use Test::More 'no_plan';
+
+ BEGIN {
+ use_ok('Benchmark', 'countit');
+@@ -10,7 +10,6 @@
+
+ unless ($Test::Mojibake::use_xs) {
+ diag('No XS module detected, will fallback to PP implementation!');
+- done_testing(2);
+ exit;
+ }
+
+@@ -33,8 +32,6 @@
+
+ diag(sprintf('XS/PP speed ratio is %0.2f', $t0->iters / $t1->iters));
+
+-done_testing(7);
+-
+ sub run {
+ my $i = 0;
+ for (@buf) {
+--- Test-Mojibake-0.3/t/release-cpan-changes.t
++++ Test-Mojibake-0.3/t/release-cpan-changes.t
+@@ -1,15 +1,11 @@
+ #!perl
+
++use Test::More;
++
+ BEGIN {
+- unless ($ENV{RELEASE_TESTING}) {
+- require Test::More;
+- Test::More::plan(skip_all => 'these tests are for release candidate testing');
+- }
++ plan skip_all => 'these tests are for release candidate testing' unless ($ENV{RELEASE_TESTING});
++ eval 'use Test::CPAN::Changes';
++ plan skip_all => 'Test::CPAN::Changes required for this test' if $@;
+ }
+
+-
+-use Test::More;
+-eval 'use Test::CPAN::Changes';
+-plan skip_all => 'Test::CPAN::Changes required for this test' if $@;
+ changes_ok();
+-done_testing();
diff --git a/Test-Mojibake-0.3-old-eu::mm.patch b/Test-Mojibake-0.3-old-eu::mm.patch
new file mode 100644
index 0000000..15a5b82
--- /dev/null
+++ b/Test-Mojibake-0.3-old-eu::mm.patch
@@ -0,0 +1,30 @@
+--- Test-Mojibake/Makefile.PL
++++ Test-Mojibake/Makefile.PL
+@@ -4,7 +4,7 @@
+
+
+
+-use ExtUtils::MakeMaker 6.30;
++use ExtUtils::MakeMaker;
+
+
+
+@@ -13,7 +13,7 @@
+ 'AUTHOR' => 'Stanislaw Pusep <stas at sysd.org>',
+ 'BUILD_REQUIRES' => {},
+ 'CONFIGURE_REQUIRES' => {
+- 'ExtUtils::MakeMaker' => '6.30'
++ 'ExtUtils::MakeMaker' => '0'
+ },
+ 'DISTNAME' => 'Test-Mojibake',
+ 'EXE_FILES' => [],
+@@ -46,6 +46,9 @@
+ delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
+ unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
+
++delete $WriteMakefileArgs{LICENSE}
++ unless eval { ExtUtils::MakeMaker->VERSION(6.31) };
++
+ WriteMakefile(%WriteMakefileArgs);
+
+
diff --git a/perl-Test-Mojibake.spec b/perl-Test-Mojibake.spec
new file mode 100644
index 0000000..733cd0a
--- /dev/null
+++ b/perl-Test-Mojibake.spec
@@ -0,0 +1,148 @@
+# We don't really need ExtUtils::MakeMaker ≥ 6.30
+%global old_eumm %(perl -MExtUtils::MakeMaker -e 'printf "%d\\n", $ExtUtils::MakeMaker::VERSION < 6.30 ? 1 : 0;' 2>/dev/null || echo 0)
+
+# We need to patch the test suite if we have an old version of Test::More
+%global old_test_more %(perl -MTest::More -e 'printf "%d\\n", $Test::More::VERSION < 0.88 ? 1 : 0;' 2>/dev/null || echo 0)
+
+# noarch, but to avoid debug* files interfering with manifest test:
+%global debug_package %{nil}
+
+# TODO:
+#
+# BuildRequires: perl(Test::Pod::LinkCheck) when available
+#
+# Unicode::CheckUTF8 is an optional requirement that significantly speeds up
+# this module but its license is currently unclear (CPAN RT#70210)
+
+Name: perl-Test-Mojibake
+Version: 0.3
+Release: 2%{?dist}
+Summary: Check your source for encoding misbehavior
+Group: Development/Libraries
+License: GPL+ or Artistic
+URL: http://search.cpan.org/dist/Test-Mojibake/
+Source0: http://search.cpan.org/CPAN/authors/id/S/SY/SYP/Test-Mojibake-%{version}.tar.gz
+Patch0: Test-Mojibake-0.3-old-eu::mm.patch
+Patch1: Test-Mojibake-0.3-old-Test::More.patch
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(id -nu)
+BuildArch: noarch
+# ===================================================================
+# Module build requirements
+# ===================================================================
+BuildRequires: perl(ExtUtils::MakeMaker)
+# ===================================================================
+# Module requirements
+# ===================================================================
+BuildRequires: perl(File::Spec)
+BuildRequires: perl(Test::Builder)
+# ===================================================================
+# Regular test suite requirements
+# ===================================================================
+BuildRequires: perl(Test::Builder::Tester)
+BuildRequires: perl(Test::More)
+# ===================================================================
+# Author/Release test requirements
+#
+# Don't run these tests or include their requirements if we're
+# bootstrapping, as many of these modules require each other for
+# their author/release tests.
+# ===================================================================
+%if 0%{!?perl_bootstrap:1}
+BuildRequires: perl(Pod::Coverage::TrustPod)
+BuildRequires: perl(Test::CPAN::Meta)
+BuildRequires: perl(Test::DistManifest)
+BuildRequires: perl(Test::HasVersion)
+BuildRequires: perl(Test::NoTabs)
+BuildRequires: perl(Test::Pod::Coverage)
+BuildRequires: perl(Test::Pod)
+BuildRequires: perl(Test::Portability::Files)
+# Modules only available from EL-5
+%if 0%{?fedora} || 0%{?rhel} > 4
+BuildRequires: perl(Test::Perl::Critic)
+BuildRequires: perl(Test::Synopsis)
+%endif
+# Modules only available from EL-6
+%if 0%{?fedora} || 0%{?rhel} > 5
+BuildRequires: perl(Test::Kwalitee)
+BuildRequires: perl(Test::MinimumVersion)
+BuildRequires: perl(Test::Vars)
+%endif
+# Modules only available from EL-7
+%if 0%{?fedora} || 0%{?rhel} > 6
+BuildRequires: perl(Test::CPAN::Changes)
+%endif
+%endif
+# ===================================================================
+# Runtime requirements
+# ===================================================================
+Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
+
+%description
+Many modern text editors automatically save files using UTF-8 codification.
+However, the perl interpreter does not expect it by default. Whilst this does
+not represent a big deal on (most) backend-oriented programs, Web framework
+(Catalyst, Mojolicious) based applications will suffer so-called Mojibake
+(literally: "unintelligible sequence of characters"). Even worse: if an editor
+saves BOM (Byte Order Mark, U+FEFF character in Unicode) at the start of a
+script with the executable bit set (on Unix systems), it won't execute at all,
+due to shebang corruption.
+
+Avoiding codification problems is quite simple:
+
+ * Always use utf8/use common::sense when saving source as UTF-8
+ * Always specify =encoding utf8 when saving POD as UTF-8
+ * Do neither of above when saving as ISO-8859-1
+ * Never save BOM (not that it's wrong; just avoid it as you'll barely
+ notice its presence when in trouble)
+
+However, if you find yourself upgrading old code to use UTF-8 or trying to
+standardize a big project with many developers, each one using a different
+platform/editor, reviewing all files manually can be quite painful, especially
+in cases where some files have multiple encodings (note: it all started when I
+realized that gedit and derivatives are unable to open files with character
+conversion tables).
+
+Enter the Test::Mojibake ;)
+
+%prep
+%setup -q -n Test-Mojibake-%{version}
+
+# We don't really need ExtUtils::MakeMaker ≥ 6.30
+%if %{old_eumm}
+%patch0 -p1
+%endif
+
+# We need to patch the test suite if we have an old version of Test::More
+%if %{old_test_more}
+%patch1 -p1
+%endif
+
+%build
+perl Makefile.PL INSTALLDIRS=vendor
+make %{?_smp_mflags}
+
+%install
+rm -rf %{buildroot}
+make pure_install PERL_INSTALL_ROOT=%{buildroot}
+find %{buildroot} -type f -name .packlist -exec rm -f {} \;
+find %{buildroot} -depth -type d -exec rmdir {} \; 2>/dev/null
+%{_fixperms} %{buildroot}
+
+%check
+make test %{!?perl_bootstrap:AUTHOR_TESTING=1 RELEASE_TESTING=1}
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%doc Changes LICENSE README
+%{perl_vendorlib}/Test/
+%{_mandir}/man3/Test::Mojibake.3pm*
+
+%changelog
+* Thu Aug 11 2011 Paul Howarth <paul at city-fan.org> - 0.3-2
+- Sanitize for Fedora/EPEL submission
+
+* Thu Aug 11 2011 Paul Howarth <paul at city-fan.org> - 0.3-1
+- Initial RPM version
diff --git a/sources b/sources
index e69de29..db208fb 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+6387414378fc302582d7955e61f132e3 Test-Mojibake-0.3.tar.gz
More information about the perl-devel
mailing list