Commit | Line | Data |
cc7c20a0 |
1 | use Config; |
2 | BEGIN { |
a6d0da2f |
3 | unless ($Config{useithreads}) { |
4 | print "1..0 # SKIP your perl does not support ithreads\n"; |
5 | exit 0; |
cc7c20a0 |
6 | } |
7 | } |
a6d0da2f |
8 | use threads; |
9 | use strictures 1; |
10 | use Test::More; |
cc7c20a0 |
11 | |
12 | use Sub::Defer; |
13 | |
14 | my %made; |
15 | |
16 | my $one_defer = defer_sub 'Foo::one' => sub { |
17 | die "remade - wtf" if $made{'Foo::one'}; |
18 | $made{'Foo::one'} = sub { 'one' } |
19 | }; |
20 | |
a6d0da2f |
21 | is(threads->create(sub { |
cc7c20a0 |
22 | my $info = Sub::Defer::defer_info($one_defer); |
a6d0da2f |
23 | $info && $info->[0]; |
24 | })->join, 'Foo::one', 'able to retrieve info in thread'); |
cc7c20a0 |
25 | |
a6d0da2f |
26 | is(threads->create(sub { |
cc7c20a0 |
27 | undefer_sub($one_defer); |
a6d0da2f |
28 | $made{'Foo::one'} && $made{'Foo::one'} == \&Foo::one && 1234; |
29 | })->join, 1234, 'able to undefer in thread'); |
cc7c20a0 |
30 | |
31 | done_testing; |