File tree Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Expand file tree Collapse file tree 1 file changed +7
-5
lines changed Original file line number Diff line number Diff line change 4
4
5
5
namespace WyriHaximus \React \PHPUnit ;
6
6
7
- use React \Promise \PromiseInterface ;
7
+ use React \EventLoop \Loop ;
8
+ use React \Promise \Deferred ;
8
9
use ReflectionClass ;
9
10
10
11
use function assert ;
11
12
use function is_string ;
12
13
use function React \Async \async ;
13
14
use function React \Async \await ;
14
15
use function React \Promise \race ;
15
- use function React \Promise \reject ;
16
- use function React \Promise \Timer \sleep ;
17
16
18
17
trait RunTestsInFibersTrait
19
18
{
@@ -69,15 +68,18 @@ final protected function runAsyncTest(mixed ...$args): mixed
69
68
$ timeout = $ methodTimeout ->timeout ();
70
69
}
71
70
71
+ $ sleepingDeferred = new Deferred ();
72
+ $ sleepTimer = Loop::addTimer ($ timeout , static fn () => $ sleepingDeferred ->reject (new TimedOut ('Test timed out after ' . $ timeout . ' second(s) ' )));
73
+
72
74
/**
73
75
* @psalm-suppress MixedArgument
74
76
* @psalm-suppress UndefinedInterfaceMethod
75
77
*/
76
78
return await (race ([
77
79
async (
78
80
fn (): mixed => ([$ this , $ this ->realTestName ])(...$ args ), /** @phpstan-ignore-line */
79
- )(),
80
- sleep ( $ timeout )-> then ( static fn (): PromiseInterface => reject ( new TimedOut ( ' Test timed out after ' . $ timeout . ' second(s) ' )) ),
81
+ )()-> always ( static fn () => Loop:: cancelTimer ( $ sleepTimer )) ,
82
+ $ sleepingDeferred -> promise ( ),
81
83
]));
82
84
}
83
85
You can’t perform that action at this time.
0 commit comments