]> git.vpit.fr Git - perl/modules/Lexical-Types.git/commitdiff
Skip threads tests unless perl version is 5.13.4 or greater
authorVincent Pit <vince@profvince.com>
Mon, 3 Jan 2011 14:59:22 +0000 (15:59 +0100)
committerVincent Pit <vince@profvince.com>
Mon, 3 Jan 2011 14:59:22 +0000 (15:59 +0100)
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/30-threads.t
t/31-threads-teardown.t

index aa42d69f98c19ef1daa793b6fdfb3048a148956b..5122dd7ec73f6d9dd44f606ccf26211ea5083c70 100644 (file)
@@ -3,14 +3,20 @@
 use strict;
 use warnings;
 
+sub skipall {
+ my ($msg) = @_;
+ require Test::More;
+ Test::More::plan(skip_all => $msg);
+}
+
 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_LEXICAL_TYPES_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;
@@ -19,12 +25,10 @@ use Test::More;
 
 BEGIN {
  require Lexical::Types;
- if (Lexical::Types::LT_THREADSAFE()) {
-  plan tests => 10 * 2 * 3 * (1 + 2);
-  defined and diag "Using threads $_" for $threads::VERSION;
- } else {
-  plan skip_all => 'This Lexical::Types isn\'t thread safe';
- }
+ skipall 'This Lexical::Types isn\'t thread safe'
+                                         unless Lexical::Types::LT_THREADSAFE();
+ plan tests => 10 * 2 * 3 * (1 + 2);
+ defined and diag "Using threads $_" for $threads::VERSION;
 }
 
 {
index 2354e608f2c0bd834e3b80f34d644615ec339e5f..306618252cac81e87af46c854624455308a682fc 100644 (file)
@@ -3,14 +3,20 @@
 use strict;
 use warnings;
 
+sub skipall {
+ my ($msg) = @_;
+ require Test::More;
+ Test::More::plan(skip_all => $msg);
+}
+
 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_LEXICAL_TYPES_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;
@@ -19,12 +25,10 @@ use Test::More;
 
 BEGIN {
  require Lexical::Types;
- if (Lexical::Types::LT_THREADSAFE()) {
-  plan tests => 1;
-  defined and diag "Using threads $_" for $threads::VERSION;
- } else {
-  plan skip_all => 'This Lexical::Types isn\'t thread safe';
- }
+ skipall 'This Lexical::Types isn\'t thread safe'
+                                         unless Lexical::Types::LT_THREADSAFE();
+ plan tests => 1;
+ defined and diag "Using threads $_" for $threads::VERSION;
 }
 
 sub run_perl {