From: Vincent Pit Date: Sun, 3 Oct 2010 00:31:48 +0000 (+0200) Subject: Skip threads tests unless perl version is 5.13.4 or greater X-Git-Tag: rt62800~5 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fautovivification.git;a=commitdiff_plain;h=624f3e979a9d31ae5d86d95fa008af05fa83723e 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/50-threads.t b/t/50-threads.t index 99aa1ad..258bf08 100644 --- a/t/50-threads.t +++ b/t/50-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_AUTOVIVIFICATION_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 autovivification; - if (autovivification::A_THREADSAFE()) { - plan tests => 10 * 2 * 3 * (1 + 2); - defined and diag "Using threads $_" for $threads::VERSION; - } else { - plan skip_all => 'This autovivification isn\'t thread safe'; - } + skipall 'This autovivification isn\'t thread safe' + unless autovivification::A_THREADSAFE(); + plan tests => 10 * 2 * 3 * (1 + 2); + defined and diag "Using threads $_" for $threads::VERSION; } { diff --git a/t/51-threads-teardown.t b/t/51-threads-teardown.t index d769fb6..d825f91 100644 --- a/t/51-threads-teardown.t +++ b/t/51-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_AUTOVIVIFICATION_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 autovivification; - if (autovivification::A_THREADSAFE()) { - plan tests => 1; - defined and diag "Using threads $_" for $threads::VERSION; - } else { - plan skip_all => 'This autovivification isn\'t thread safe'; - } + skipall 'This autovivification isn\'t thread safe' + unless autovivification::A_THREADSAFE(); + plan tests => 1; + defined and diag "Using threads $_" for $threads::VERSION; } sub run_perl {