From: Vincent Pit Date: Sat, 28 Mar 2015 00:41:12 +0000 (-0300) Subject: Port thread tests to the new VPIT::TestHelpers interface X-Git-Tag: v0.57~22 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FVariable-Magic.git;a=commitdiff_plain;h=51804c2b718abc276a95b4626f3fb30f829e51fe Port thread 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 2df0f95..e474b4b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -45,6 +45,5 @@ t/lib/VPIT/TestHelpers.pm t/lib/Variable/Magic/TestDestroyRequired.pm t/lib/Variable/Magic/TestGlobalDestruction.pm t/lib/Variable/Magic/TestScopeEnd.pm -t/lib/Variable/Magic/TestThreads.pm t/lib/Variable/Magic/TestValue.pm t/lib/Variable/Magic/TestWatcher.pm diff --git a/t/40-threads.t b/t/40-threads.t index 1a3d5ab..7f55f22 100644 --- a/t/40-threads.t +++ b/t/40-threads.t @@ -3,16 +3,18 @@ use strict; use warnings; -use lib 't/lib'; -use Variable::Magic::TestThreads; - -use Test::More 'no_plan'; - use Variable::Magic qw< wizard cast dispell getdata VMG_OP_INFO_NAME VMG_OP_INFO_OBJECT >; +use lib 't/lib'; +use VPIT::TestHelpers ( + threads => [ 'Variable::Magic' => Variable::Magic::VMG_THREADSAFE ], +); + +use Test::Leaner 'no_plan'; + my $destroyed : shared = 0; sub try { diff --git a/t/41-clone.t b/t/41-clone.t index 6214741..7528bec 100644 --- a/t/41-clone.t +++ b/t/41-clone.t @@ -3,16 +3,18 @@ use strict; use warnings; -use lib 't/lib'; -use Variable::Magic::TestThreads; - -use Test::More 'no_plan'; - use Variable::Magic qw< wizard cast dispell getdata VMG_OP_INFO_NAME VMG_OP_INFO_OBJECT >; +use lib 't/lib'; +use VPIT::TestHelpers ( + threads => [ 'Variable::Magic' => Variable::Magic::VMG_THREADSAFE ], +); + +use Test::Leaner 'no_plan'; + my $destroyed : shared = 0; my $c : shared = 0; diff --git a/t/lib/Variable/Magic/TestThreads.pm b/t/lib/Variable/Magic/TestThreads.pm deleted file mode 100644 index e67ea3f..0000000 --- a/t/lib/Variable/Magic/TestThreads.pm +++ /dev/null @@ -1,54 +0,0 @@ -package Variable::Magic::TestThreads; - -use strict; -use warnings; - -use Config qw<%Config>; - -use Variable::Magic qw; - -use VPIT::TestHelpers; - -sub diag { - require Test::More; - Test::More::diag($_) for @_; -} - -sub import { - shift; - - skip_all 'This Variable::Magic isn\'t thread safe' unless VMG_THREADSAFE; - - my $force = $ENV{PERL_VARIABLE_MAGIC_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', [ ]); - load_or_skip_all('threads::shared', $force ? '0' : '1.14', [ ]); - - 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 $@; - diag(@diag) if @diag; - return $thread ? $thread : (); -} - -1;