diff options
Diffstat (limited to 'ext/threads/shared/t/no_share.t')
-rw-r--r-- | ext/threads/shared/t/no_share.t | 63 |
1 files changed, 40 insertions, 23 deletions
diff --git a/ext/threads/shared/t/no_share.t b/ext/threads/shared/t/no_share.t index 7e5a80fb37..23a43fd3da 100644 --- a/ext/threads/shared/t/no_share.t +++ b/ext/threads/shared/t/no_share.t @@ -1,47 +1,64 @@ +use strict; use warnings; BEGIN { -# chdir 't' if -d 't'; -# push @INC ,'../lib'; - require Config; import Config; - unless ($Config{'useithreads'}) { - print "1..0 # Skip: no useithreads\n"; - exit 0; + if ($ENV{'PERL_CORE'}){ + chdir 't'; + unshift @INC, '../lib'; + } + use Config; + if (! $Config{'useithreads'}) { + print("1..0 # Skip: Perl not compiled with 'useithreads'\n"); + exit(0); } - $SIG{__WARN__} = sub { $warnmsg = shift; }; } +use ExtUtils::testlib; sub ok { my ($id, $ok, $name) = @_; - $name = '' unless defined $name; # You have to do it this way or VMS will get confused. - print $ok ? "ok $id - $name\n" : "not ok $id - $name\n"; - - printf "# Failed test at line %d\n", (caller)[2] unless $ok; + if ($ok) { + print("ok $id - $name\n"); + } else { + print("not ok $id - $name\n"); + printf("# Failed test at line %d\n", (caller)[2]); + } - return $ok; + return ($ok); } +BEGIN { + $| = 1; + print("1..6\n"); ### Number of tests that will be run ### +}; + our $warnmsg; -use ExtUtils::testlib; -use strict; -BEGIN { print "1..5\n" }; +BEGIN { + $SIG{__WARN__} = sub { $warnmsg = shift; }; +} + use threads::shared; use threads; -ok(1,1,"loaded"); -ok(2,$warnmsg =~ /Warning, threads::shared has already been loaded/, +ok(1, 1, 'Loaded'); + +### Start of Testing ### + +ok(2, ($warnmsg =~ /Warning, threads::shared has already been loaded/)?1:0, "threads has warned us"); + my $test = "bar"; share($test); -ok(3,$test eq "bar","Test disabled share not interfering"); -threads->create( - sub { - ok(4,$test eq "bar","Test disabled share after thread"); +ok(3, $test eq "bar", "Test disabled share not interfering"); + +threads->create(sub { + ok(4, $test eq "bar", "Test disabled share after thread"); $test = "baz"; - })->join(); + })->join(); # Value should either remain unchanged or be value set by other thread -ok(5,$test eq "bar" || $test eq 'baz',"Test that value is an expected one"); +ok(5, $test eq "bar" || $test eq 'baz', "Test that value is an expected one"); +ok(6, ! is_shared($test), "Check for sharing"); +# EOF |