]> git.vpit.fr Git - perl/modules/indirect.git/commitdiff
Skip threads tests unless perl version is 5.13.4 or greater
authorVincent Pit <vince@profvince.com>
Sat, 2 Oct 2010 23:35:11 +0000 (01:35 +0200)
committerVincent Pit <vince@profvince.com>
Sat, 2 Oct 2010 23:35:11 +0000 (01:35 +0200)
There was a long standing bug in the handling of GV <-> CV double linkage
that could (and explicitely did with a poisonous perl) cause segfaults at
thread destruction. It got fixed by Dave in commit 803f274 which went in
5.13.3, but the fix was amended for 5.13.4 in commit 09aad8f. Since it's
not really fair for the user to not be able to install the module because
of this, we skip the threads tests unless perl is at least 5.13.4.

t/40-threads.t
t/41-threads-teardown.t

index 16af4ca9656a0a72f282e39d71ca33b07961a7e9..63869b816e5c644cfd4117e152a306b72755df1c 100644 (file)
@@ -3,14 +3,20 @@
 use strict;
 use warnings;
 
 use strict;
 use warnings;
 
+sub skipall {
+ my ($msg) = @_;
+ require Test::More;
+ Test::More::plan(skip_all => $msg);
+}
+
 use Config qw/%Config/;
 
 BEGIN {
 use Config qw/%Config/;
 
 BEGIN {
- if (!$Config{useithreads}) {
-  require Test::More;
-  Test::More->import;
-  plan(skip_all => 'This perl wasn\'t built to support threads');
- }
+ my $force = $ENV{PERL_INDIRECT_TEST_THREADS} ? 1 : !1;
+ skipall 'This perl wasn\'t built to support threads'
+                                                    unless $Config{useithreads};
+ skipall 'perl 5.13.4 required to test thread safety'
+                                                unless $force or $] >= 5.013004;
 }
 
 use threads;
 }
 
 use threads;
@@ -20,12 +26,9 @@ use Test::More;
 BEGIN {
  delete $ENV{PERL_INDIRECT_PM_DISABLE};
  require indirect;
 BEGIN {
  delete $ENV{PERL_INDIRECT_PM_DISABLE};
  require indirect;
- if (indirect::I_THREADSAFE()) {
-  plan tests => 10 * 2 * (2 + 3);
-  defined and diag "Using threads $_" for $threads::VERSION;
- } else {
-  plan skip_all => 'This indirect isn\'t thread safe';
- }
+ skipall 'This indirect isn\'t thread safe' unless indirect::I_THREADSAFE();
+ plan tests => 10 * 2 * (2 + 3);
+ defined and diag "Using threads $_" for $threads::VERSION;
 }
 
 sub expect {
 }
 
 sub expect {
index b2186e8ee64b216ad231ec01e1e59deae1adcd4b..3bbed52c43c83a8558b1057bf4520fddc042b0f3 100644 (file)
@@ -3,14 +3,20 @@
 use strict;
 use warnings;
 
 use strict;
 use warnings;
 
+sub skipall {
+ my ($msg) = @_;
+ require Test::More;
+ Test::More::plan(skip_all => $msg);
+}
+
 use Config qw/%Config/;
 
 BEGIN {
 use Config qw/%Config/;
 
 BEGIN {
- if (!$Config{useithreads}) {
-  require Test::More;
-  Test::More->import;
-  plan(skip_all => 'This perl wasn\'t built to support threads');
- }
+ my $force = $ENV{PERL_INDIRECT_TEST_THREADS} ? 1 : !1;
+ skipall 'This perl wasn\'t built to support threads'
+                                                    unless $Config{useithreads};
+ skipall 'perl 5.13.4 required to test thread safety'
+                                                unless $force or $] >= 5.013004;
 }
 
 use threads;
 }
 
 use threads;
@@ -20,12 +26,9 @@ use Test::More;
 BEGIN {
  delete $ENV{PERL_INDIRECT_PM_DISABLE};
  require indirect;
 BEGIN {
  delete $ENV{PERL_INDIRECT_PM_DISABLE};
  require indirect;
- if (indirect::I_THREADSAFE()) {
-  plan tests => 1;
-  defined and diag "Using threads $_" for $threads::VERSION;
- } else {
-  plan skip_all => 'This indirect isn\'t thread safe';
- }
+ skipall 'This indirect isn\'t thread safe' unless indirect::I_THREADSAFE();
+ plan tests => 1;
+ defined and diag "Using threads $_" for $threads::VERSION;
 }
 
 sub run_perl {
 }
 
 sub run_perl {