From: Vincent Pit Date: Mon, 3 Jan 2011 14:59:22 +0000 (+0100) Subject: Skip threads tests unless perl version is 5.13.4 or greater X-Git-Tag: v0.10~4 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLexical-Types.git;a=commitdiff_plain;h=569b0505de7c5021759a402e898c1fcaaee2caac Skip threads tests unless perl version is 5.13.4 or greater 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. --- diff --git a/t/30-threads.t b/t/30-threads.t index aa42d69..5122dd7 100644 --- a/t/30-threads.t +++ b/t/30-threads.t @@ -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; } { diff --git a/t/31-threads-teardown.t b/t/31-threads-teardown.t index 2354e60..3066182 100644 --- a/t/31-threads-teardown.t +++ b/t/31-threads-teardown.t @@ -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 {