From: Vincent Pit Date: Tue, 24 Mar 2015 15:13:15 +0000 (-0300) Subject: Port threads tests to the new VPIT::TestHelpers interface X-Git-Tag: rt100068~12 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=commitdiff_plain;h=922f734434b9a4bacae95a124dcb9724a4d64259 Port threads tests to the new VPIT::TestHelpers interface The new 'force threads test' environment variable is PERL_FORCE_TEST_THREADS. --- diff --git a/MANIFEST b/MANIFEST index f131bff..c7765c1 100644 --- a/MANIFEST +++ b/MANIFEST @@ -50,4 +50,3 @@ t/lib/indirect/TestRequired5/c0.pm t/lib/indirect/TestRequired5/d0.pm t/lib/indirect/TestRequired6.pm t/lib/indirect/TestRequiredGlobal.pm -t/lib/indirect/TestThreads.pm diff --git a/t/40-threads.t b/t/40-threads.t index 3f2fe25..41ce0a5 100644 --- a/t/40-threads.t +++ b/t/40-threads.t @@ -3,8 +3,12 @@ use strict; use warnings; +BEGIN { require indirect; } + use lib 't/lib'; -use indirect::TestThreads; +use VPIT::TestHelpers ( + threads => [ 'indirect' => indirect::I_THREADSAFE ], +); use Test::Leaner; diff --git a/t/41-threads-teardown.t b/t/41-threads-teardown.t index 6c4814c..a4a005f 100644 --- a/t/41-threads-teardown.t +++ b/t/41-threads-teardown.t @@ -3,9 +3,12 @@ use strict; use warnings; +BEGIN { require indirect; } + use lib 't/lib'; -use VPIT::TestHelpers; -use indirect::TestThreads; +use VPIT::TestHelpers ( + threads => [ 'indirect' => indirect::I_THREADSAFE ], +); use Test::Leaner tests => 3; diff --git a/t/42-threads-global.t b/t/42-threads-global.t index c2c4d83..b3e0bff 100644 --- a/t/42-threads-global.t +++ b/t/42-threads-global.t @@ -3,8 +3,12 @@ use strict; use warnings; +BEGIN { require indirect; } + use lib 't/lib'; -use indirect::TestThreads; +use VPIT::TestHelpers ( + threads => [ 'indirect' => indirect::I_THREADSAFE ], +); use Test::Leaner; diff --git a/t/lib/indirect/TestThreads.pm b/t/lib/indirect/TestThreads.pm deleted file mode 100644 index 1b6c6da..0000000 --- a/t/lib/indirect/TestThreads.pm +++ /dev/null @@ -1,51 +0,0 @@ -package indirect::TestThreads; - -use strict; -use warnings; - -use Config qw<%Config>; - -use VPIT::TestHelpers; - -sub import { - shift; - - require indirect; - - skip_all 'This indirect isn\'t thread safe' unless indirect::I_THREADSAFE(); - - my $force = $ENV{PERL_INDIRECT_TEST_THREADS} ? 1 : !1; - skip_all 'This perl wasn\'t built to support threads' - unless $Config{useithreads}; - skip_all 'perl 5.13.4 required to test thread safety' - unless $force or "$]" >= 5.013_004; - - load_or_skip_all('threads', $force ? '0' : '1.67', [ ]); - - my %exports = ( - spawn => \&spawn, - ); - - my $pkg = caller; - while (my ($name, $code) = each %exports) { - no strict 'refs'; - *{$pkg.'::'.$name} = $code; - } -} - -sub spawn { - local $@; - my @diag; - my $thread = eval { - local $SIG{__WARN__} = sub { push @diag, "Thread creation warning: @_" }; - threads->create(@_); - }; - push @diag, "Thread creation error: $@" if $@; - if (@diag) { - require Test::Leaner; - Test::Leaner::diag($_) for @diag; - } - return $thread ? $thread : (); -} - -1;