-#!perl -T
+#!perl
use strict;
use warnings;
use lib 't/lib';
-use Scope::Upper::TestThreads;
+use VPIT::TestHelpers (
+ threads => [ 'Scope::Upper' => 'Scope::Upper::SU_THREADSAFE()' ],
+ 'usleep',
+);
use Test::Leaner;
is uid(UP), $top, "uid(UP) == \$top (in thread $tid)";
- usleep rand(1e6);
+ usleep rand(2.5e5);
ok validate_uid($here), "\$here is valid (in thread $tid)";
ok !validate_uid($up), "\$up is no longer valid (in thread $tid)";
my %uids;
my $threads = 0;
-for my $thread (map threads->create(\&cb), 1 .. 30) {
- ++$threads;
+for my $thread (map spawn(\&cb), 1 .. 30) {
my $tid = $thread->tid;
my $uid = $thread->join;
- ++$uids{$uid};
- ok !validate_uid($uid), "\$here is no longer valid (out of thread $tid)";
+ if (defined $uid) {
+ ++$threads;
+ ++$uids{$uid};
+ ok !validate_uid($uid), "\$here is no longer valid (out of thread $tid)";
+ }
}
is scalar(keys %uids), $threads, 'all the UIDs were different';
-done_testing($threads * 5 + 1);
+done_testing;