Move threads from ext/ to dist/
[perl.git] / ext / threads-shared / t / no_share.t
1 use strict;
2 use warnings;
3
4 BEGIN {
5     use Config;
6     if (! $Config{'useithreads'}) {
7         print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
8         exit(0);
9     }
10 }
11
12 use ExtUtils::testlib;
13
14 sub ok {
15     my ($id, $ok, $name) = @_;
16
17     # You have to do it this way or VMS will get confused.
18     if ($ok) {
19         print("ok $id - $name\n");
20     } else {
21         print("not ok $id - $name\n");
22         printf("# Failed test at line %d\n", (caller)[2]);
23     }
24
25     return ($ok);
26 }
27
28 BEGIN {
29     $| = 1;
30     print("1..6\n");   ### Number of tests that will be run ###
31 };
32
33 our $warnmsg;
34 BEGIN {
35     $SIG{__WARN__} = sub { $warnmsg = shift; };
36 }
37
38 use threads::shared;
39 use threads;
40 ok(1, 1, 'Loaded');
41
42 ### Start of Testing ###
43
44 ok(2, ($warnmsg =~ /Warning, threads::shared has already been loaded/)?1:0,
45     "threads has warned us");
46
47 my $test = "bar";
48 share($test);
49 ok(3, $test eq "bar", "Test disabled share not interfering");
50
51 threads->create(sub {
52                    ok(4, $test eq "bar", "Test disabled share after thread");
53                    $test = "baz";
54                 })->join();
55 # Value should either remain unchanged or be value set by other thread
56 ok(5, $test eq "bar" || $test eq 'baz', "Test that value is an expected one");
57
58 ok(6, ! is_shared($test), "Check for sharing");
59
60 exit(0);
61
62 # EOF