Skip to content

Commit 6aafccd

Browse files
committed
Initial commit
0 parents  commit 6aafccd

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

lib/Devel/PatchPerl/Plugin/Darwin.pm

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package Devel::PatchPerl::Plugin::Darwin;
2+
3+
require Devel::PatchPerl;
4+
5+
use strict;
6+
use warnings;
7+
8+
my @patch = (
9+
{
10+
perl => [ qr/^5\.8\.9$/ ],
11+
subs => [ [ \&_patch_darwin_locale_test ] ],
12+
},
13+
);
14+
15+
sub patchperl {
16+
my $class = shift;
17+
my %args = @_;
18+
my ($vers, $source, $patchexe) = @args{'version', 'source', 'patchexe'};
19+
for my $p ( grep { Devel::PatchPerl::_is( $_->{perl}, $vers ) } @patch) {
20+
for my $s (@{$p->{subs}}) {
21+
my($sub, @args) = @$s;
22+
push @args, $vers unless scalar @args;
23+
$sub->(@args);
24+
}
25+
}
26+
}
27+
28+
sub _patch_darwin_locale_test {
29+
my $patch = <<'END';
30+
--- lib/locale.t
31+
+++ lib/locale.t
32+
@@ -460,6 +460,9 @@ if ($^O eq 'darwin') {
33+
if ($v >= 8 and $v < 10) {
34+
debug "# Skipping eu_ES, be_BY locales -- buggy in Darwin\n";
35+
@Locale = grep ! m/^(eu_ES|be_BY.CP1131$)/, @Locale;
36+
+ } else {
37+
+ debug "# Skipping be_BY locales -- buggy in Darwin\n";
38+
+ @Locale = grep ! m/^be_BY\.CP1131$/, @Locale;
39+
}
40+
}
41+
END
42+
Devel::PatchPerl::_patch($patch);
43+
}
44+
45+
1;

t/patch.t

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
use Test::More;
2+
use File::Temp;
3+
use File::Fetch;
4+
use File::Path;
5+
use Archive::Tar;
6+
use Devel::PatchPerl;
7+
use Devel::PatchPerl::Hints qw[hint_file];
8+
9+
my $os = $^O;
10+
my $version = '5.8.9';
11+
12+
$ENV{PERL5_PATCHPERL_PLUGIN} = 'Darwin';
13+
14+
my $stderr;
15+
open my $stdtmp, '>&', STDERR;
16+
close STDERR;
17+
open STDERR, '>', \$stderr;
18+
19+
my $temp = File::Temp->newdir();
20+
my $url = "http://www.cpan.org/src/5.0/perl-$version.tar.gz";
21+
my $ff = File::Fetch->new(uri => $url);
22+
my $targz = $ff->fetch( to => $temp->dirname ) or die $ff->error();
23+
my $tar = Archive::Tar->new($targz) or die;
24+
$tar->setcwd($temp->dirname);
25+
$tar->extract or die;
26+
my $srcdir = $temp->dirname . "/perl-$version";
27+
my $result = Devel::PatchPerl->patch_source($version, $srcdir);
28+
29+
close STDERR;
30+
open STDERR, '>&', $stdtmp;
31+
close $stdtmp;
32+
33+
my ($file, $data) = hint_file($os);
34+
35+
is($result, 1, 'test result');
36+
is($stderr, "Patching 'hints/$file'\n", 'stderr');
37+
38+
done_testing();

0 commit comments

Comments
 (0)