[t/spec] Add tricky tests (which pass after latest Rakudo patch), unfudge old simple...
[pugs.git] / t / unspecced / async.t
blobb4ac5cf829400025fe07ab56aee7f5f65ece546a
1 use v6;
3 use Test;
5 =begin kwid
7 = DESCRIPTION
9 This test tests the interaction of C<async {}> and
10 C<run>. Ideally, while a C<run> call is in progress,
11 C<async> blocks are still being executed.
13 =end kwid
15 plan 1;
16 diag "Running under $*OS";
18 my @events;
19 my $event_count = 4;
21 sub spawn_counter () {
22   async {
23     my $count = $event_count;
24     while ($count--) {
25       diag $count;
26       push @events, time();
27       sleep 1; # five seconds are enough for everybody
28     };
29   };
32 my $redir = ">";
34 ok(0, "async+run known to be erratic _everywhere_, disable for now", :todo<bug>);
35 exit;
37 if $?OS eq any <MSWin32 mingw msys cygwin> {
38   skip 1, "async known to be problematic on Win32";
39   exit;
42 diag "Spawning counter";
43 spawn_counter();
44 run( qq!$*EXECUTABLE_NAME -e "sleep(5)"!); 
46 if (!ok(@events == $event_count, "Our async counter finished while we were running a subprocess")) {
47   diag "Got      " ~ +@events ~ " element(s).";
48   diag "Expected $event_count elements."