reactphp / promise

Promises/A implementation for PHP.
https://reactphp.org/promise/
MIT License
2.38k stars 146 forks source link

Test PHP 7.4 on Travis #157

Closed WyriHaximus closed 4 years ago

clue commented 4 years ago

@WyriHaximus Thanks for looking into this, the failing test case due to a garbage reference on PHP 7.4 only is interesting.

I can not reproduce this problem locally using this Docker container:

$ docker run -it --rm -v `pwd`:/data --workdir=/data php:7.4 php -d memory_limit=-1 vendor/bin/phpunit

It looks like this could be related to the particular installation or some extensions (xdebug)? Do you have any further insights?

clue commented 4 years ago

I can also not reproduce the problem with PHP 7.4 and Xdebug installed, so this cause is still unknown:

docker run -it --rm -v `pwd`:/data --workdir=/data ubuntu bash
apt update
apt -y install software-properties-common
add-apt-repository ppa:ondrej/php
apt install -y php7.4-cli php7.4-xdebug php7.4-dom php7.4-mbstring
php -v
vendor/bin/phpunit
WyriHaximus commented 4 years ago

@clue pretty sure this has to do with the ordering of tests, when the tests are executed in the order they are in the DeferredTest file it fails for me

WyriHaximus commented 4 years ago

@clue can you run it with --filter DeferredTest --debug since the order seems to matter?

clue commented 4 years ago

@WyriHaximus Not sure I follow what you're suggesting. The below command executes just fine:

$ docker run -it --rm -v `pwd`:/data --workdir=/data php:7.4 php -d memory_limit=-1 vendor/bin/phpunit --filter DeferredTest --debug

Does this work for you as well? Can you reproduce the problem locally? You mentioned some ordering issues, not sure how to reproduce this locally at the moment (plus I don't see anything changed in this PR in this regard).

WyriHaximus commented 4 years ago

@clue what is the output for you?

clue commented 4 years ago

Getting the same (successful) output for origin/master and your PR checked out:

``` PHPUnit 7.5.20 by Sebastian Bergmann and contributors. Test 'React\Promise\DeferredTest::shouldRejectWithoutCreatingGarbageCyclesIfCancellerRejectsWithException' started Test 'React\Promise\DeferredTest::shouldRejectWithoutCreatingGarbageCyclesIfCancellerRejectsWithException' ended Test 'React\Promise\DeferredTest::shouldRejectWithoutCreatingGarbageCyclesIfParentCancellerRejectsWithException' started Test 'React\Promise\DeferredTest::shouldRejectWithoutCreatingGarbageCyclesIfParentCancellerRejectsWithException' ended Test 'React\Promise\DeferredTest::shouldRejectWithoutCreatingGarbageCyclesIfCancellerHoldsReferenceAndExplicitlyRejectWithException' started Test 'React\Promise\DeferredTest::shouldRejectWithoutCreatingGarbageCyclesIfCancellerHoldsReferenceAndExplicitlyRejectWithException' ended Test 'React\Promise\DeferredTest::thenShouldReturnAPromiseForPendingPromise' started Test 'React\Promise\DeferredTest::thenShouldReturnAPromiseForPendingPromise' ended Test 'React\Promise\DeferredTest::thenShouldReturnAllowNullForPendingPromise' started Test 'React\Promise\DeferredTest::thenShouldReturnAllowNullForPendingPromise' ended Test 'React\Promise\DeferredTest::cancelShouldReturnNullForPendingPromise' started Test 'React\Promise\DeferredTest::cancelShouldReturnNullForPendingPromise' ended Test 'React\Promise\DeferredTest::doneShouldReturnNullForPendingPromise' started Test 'React\Promise\DeferredTest::doneShouldReturnNullForPendingPromise' ended Test 'React\Promise\DeferredTest::doneShouldReturnAllowNullForPendingPromise' started Test 'React\Promise\DeferredTest::doneShouldReturnAllowNullForPendingPromise' ended Test 'React\Promise\DeferredTest::otherwiseShouldNotInvokeRejectionHandlerForPendingPromise' started Test 'React\Promise\DeferredTest::otherwiseShouldNotInvokeRejectionHandlerForPendingPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldReturnAPromiseForPendingPromise' started Test 'React\Promise\DeferredTest::alwaysShouldReturnAPromiseForPendingPromise' ended Test 'React\Promise\DeferredTest::thenShouldReturnAPromiseForSettledPromise' started Test 'React\Promise\DeferredTest::thenShouldReturnAPromiseForSettledPromise' ended Test 'React\Promise\DeferredTest::thenShouldReturnAllowNullForSettledPromise' started Test 'React\Promise\DeferredTest::thenShouldReturnAllowNullForSettledPromise' ended Test 'React\Promise\DeferredTest::cancelShouldReturnNullForSettledPromise' started Test 'React\Promise\DeferredTest::cancelShouldReturnNullForSettledPromise' ended Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectForSettledPromise' started Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectForSettledPromise' ended Test 'React\Promise\DeferredTest::doneShouldReturnNullForSettledPromise' started Test 'React\Promise\DeferredTest::doneShouldReturnNullForSettledPromise' ended Test 'React\Promise\DeferredTest::doneShouldReturnAllowNullForSettledPromise' started Test 'React\Promise\DeferredTest::doneShouldReturnAllowNullForSettledPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldReturnAPromiseForSettledPromise' started Test 'React\Promise\DeferredTest::alwaysShouldReturnAPromiseForSettledPromise' ended Test 'React\Promise\DeferredTest::fulfilledPromiseShouldBeImmutable' started Test 'React\Promise\DeferredTest::fulfilledPromiseShouldBeImmutable' ended Test 'React\Promise\DeferredTest::fulfilledPromiseShouldInvokeNewlyAddedCallback' started Test 'React\Promise\DeferredTest::fulfilledPromiseShouldInvokeNewlyAddedCallback' ended Test 'React\Promise\DeferredTest::thenShouldForwardResultWhenCallbackIsNull' started Test 'React\Promise\DeferredTest::thenShouldForwardResultWhenCallbackIsNull' ended Test 'React\Promise\DeferredTest::thenShouldForwardCallbackResultToNextCallback' started Test 'React\Promise\DeferredTest::thenShouldForwardCallbackResultToNextCallback' ended Test 'React\Promise\DeferredTest::thenShouldForwardPromisedCallbackResultValueToNextCallback' started Test 'React\Promise\DeferredTest::thenShouldForwardPromisedCallbackResultValueToNextCallback' ended Test 'React\Promise\DeferredTest::thenShouldSwitchFromCallbacksToErrbacksWhenCallbackReturnsARejection' started Test 'React\Promise\DeferredTest::thenShouldSwitchFromCallbacksToErrbacksWhenCallbackReturnsARejection' ended Test 'React\Promise\DeferredTest::thenShouldSwitchFromCallbacksToErrbacksWhenCallbackThrows' started Test 'React\Promise\DeferredTest::thenShouldSwitchFromCallbacksToErrbacksWhenCallbackThrows' ended Test 'React\Promise\DeferredTest::cancelShouldReturnNullForFulfilledPromise' started Test 'React\Promise\DeferredTest::cancelShouldReturnNullForFulfilledPromise' ended Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectForFulfilledPromise' started Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectForFulfilledPromise' ended Test 'React\Promise\DeferredTest::doneShouldInvokeFulfillmentHandlerForFulfilledPromise' started Test 'React\Promise\DeferredTest::doneShouldInvokeFulfillmentHandlerForFulfilledPromise' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorThrownFulfillmentHandlerForFulfilledPromise' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorThrownFulfillmentHandlerForFulfilledPromise' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorUnhandledRejectionExceptionWhenFulfillmentHandlerRejectsForFulfilledPromise' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorUnhandledRejectionExceptionWhenFulfillmentHandlerRejectsForFulfilledPromise' ended Test 'React\Promise\DeferredTest::otherwiseShouldNotInvokeRejectionHandlerForFulfilledPromise' started Test 'React\Promise\DeferredTest::otherwiseShouldNotInvokeRejectionHandlerForFulfilledPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueForFulfilledPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueForFulfilledPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsANonPromiseForFulfilledPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsANonPromiseForFulfilledPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsAPromiseForFulfilledPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsAPromiseForFulfilledPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForFulfilledPromise' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForFulfilledPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForFulfilledPromise' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForFulfilledPromise' ended Test 'React\Promise\DeferredTest::rejectedPromiseShouldBeImmutable' started Test 'React\Promise\DeferredTest::rejectedPromiseShouldBeImmutable' ended Test 'React\Promise\DeferredTest::rejectedPromiseShouldInvokeNewlyAddedCallback' started Test 'React\Promise\DeferredTest::rejectedPromiseShouldInvokeNewlyAddedCallback' ended Test 'React\Promise\DeferredTest::shouldForwardUndefinedRejectionValue' started Test 'React\Promise\DeferredTest::shouldForwardUndefinedRejectionValue' ended Test 'React\Promise\DeferredTest::shouldSwitchFromErrbacksToCallbacksWhenErrbackDoesNotExplicitlyPropagate' started Test 'React\Promise\DeferredTest::shouldSwitchFromErrbacksToCallbacksWhenErrbackDoesNotExplicitlyPropagate' ended Test 'React\Promise\DeferredTest::shouldSwitchFromErrbacksToCallbacksWhenErrbackReturnsAResolution' started Test 'React\Promise\DeferredTest::shouldSwitchFromErrbacksToCallbacksWhenErrbackReturnsAResolution' ended Test 'React\Promise\DeferredTest::shouldPropagateRejectionsWhenErrbackThrows' started Test 'React\Promise\DeferredTest::shouldPropagateRejectionsWhenErrbackThrows' ended Test 'React\Promise\DeferredTest::shouldPropagateRejectionsWhenErrbackReturnsARejection' started Test 'React\Promise\DeferredTest::shouldPropagateRejectionsWhenErrbackReturnsARejection' ended Test 'React\Promise\DeferredTest::doneShouldInvokeRejectionHandlerForRejectedPromise' started Test 'React\Promise\DeferredTest::doneShouldInvokeRejectionHandlerForRejectedPromise' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionThrownByRejectionHandlerForRejectedPromise' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionThrownByRejectionHandlerForRejectedPromise' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorRejectionExceptionWhenRejectionHandlerRejectsWithExceptionForRejectedPromise' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorRejectionExceptionWhenRejectionHandlerRejectsWithExceptionForRejectedPromise' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionProvidedAsRejectionValueForRejectedPromise' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionProvidedAsRejectionValueForRejectedPromise' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorWithDeepNestingPromiseChainsForRejectedPromise' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorWithDeepNestingPromiseChainsForRejectedPromise' ended Test 'React\Promise\DeferredTest::doneShouldRecoverWhenRejectionHandlerCatchesExceptionForRejectedPromise' started Test 'React\Promise\DeferredTest::doneShouldRecoverWhenRejectionHandlerCatchesExceptionForRejectedPromise' ended Test 'React\Promise\DeferredTest::otherwiseShouldInvokeRejectionHandlerForRejectedPromise' started Test 'React\Promise\DeferredTest::otherwiseShouldInvokeRejectionHandlerForRejectedPromise' ended Test 'React\Promise\DeferredTest::otherwiseShouldInvokeNonTypeHintedRejectionHandlerIfReasonIsAnExceptionForRejectedPromise' started Test 'React\Promise\DeferredTest::otherwiseShouldInvokeNonTypeHintedRejectionHandlerIfReasonIsAnExceptionForRejectedPromise' ended Test 'React\Promise\DeferredTest::otherwiseShouldInvokeRejectionHandlerIfReasonMatchesTypehintForRejectedPromise' started Test 'React\Promise\DeferredTest::otherwiseShouldInvokeRejectionHandlerIfReasonMatchesTypehintForRejectedPromise' ended Test 'React\Promise\DeferredTest::otherwiseShouldNotInvokeRejectionHandlerIfReaonsDoesNotMatchTypehintForRejectedPromise' started Test 'React\Promise\DeferredTest::otherwiseShouldNotInvokeRejectionHandlerIfReaonsDoesNotMatchTypehintForRejectedPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionForRejectedPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionForRejectedPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsANonPromiseForRejectedPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsANonPromiseForRejectedPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsAPromiseForRejectedPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsAPromiseForRejectedPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForRejectedPromise' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForRejectedPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForRejectedPromise' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForRejectedPromise' ended Test 'React\Promise\DeferredTest::cancelShouldReturnNullForRejectedPromise' started Test 'React\Promise\DeferredTest::cancelShouldReturnNullForRejectedPromise' ended Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectForRejectedPromise' started Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectForRejectedPromise' ended Test 'React\Promise\DeferredTest::resolveShouldResolve' started Test 'React\Promise\DeferredTest::resolveShouldResolve' ended Test 'React\Promise\DeferredTest::resolveShouldResolveWithPromisedValue' started Test 'React\Promise\DeferredTest::resolveShouldResolveWithPromisedValue' ended Test 'React\Promise\DeferredTest::resolveShouldRejectWhenResolvedWithRejectedPromise' started Test 'React\Promise\DeferredTest::resolveShouldRejectWhenResolvedWithRejectedPromise' ended Test 'React\Promise\DeferredTest::resolveShouldForwardValueWhenCallbackIsNull' started Test 'React\Promise\DeferredTest::resolveShouldForwardValueWhenCallbackIsNull' ended Test 'React\Promise\DeferredTest::resolveShouldMakePromiseImmutable' started Test 'React\Promise\DeferredTest::resolveShouldMakePromiseImmutable' ended Test 'React\Promise\DeferredTest::resolveShouldRejectWhenResolvedWithItself' started Test 'React\Promise\DeferredTest::resolveShouldRejectWhenResolvedWithItself' ended Test 'React\Promise\DeferredTest::resolveShouldRejectWhenResolvedWithAPromiseWhichFollowsItself' started Test 'React\Promise\DeferredTest::resolveShouldRejectWhenResolvedWithAPromiseWhichFollowsItself' ended Test 'React\Promise\DeferredTest::doneShouldInvokeFulfillmentHandler' started Test 'React\Promise\DeferredTest::doneShouldInvokeFulfillmentHandler' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionThrownFulfillmentHandler' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionThrownFulfillmentHandler' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorUnhandledRejectionExceptionWhenFulfillmentHandlerRejects' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorUnhandledRejectionExceptionWhenFulfillmentHandlerRejects' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValue' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValue' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsANonPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsANonPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsAPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressValueWhenHandlerReturnsAPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForFulfillment' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForFulfillment' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForFulfillment' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForFulfillment' ended Test 'React\Promise\DeferredTest::rejectShouldRejectWithAnException' started Test 'React\Promise\DeferredTest::rejectShouldRejectWithAnException' ended Test 'React\Promise\DeferredTest::rejectShouldForwardReasonWhenCallbackIsNull' started Test 'React\Promise\DeferredTest::rejectShouldForwardReasonWhenCallbackIsNull' ended Test 'React\Promise\DeferredTest::rejectShouldMakePromiseImmutable' started Test 'React\Promise\DeferredTest::rejectShouldMakePromiseImmutable' ended Test 'React\Promise\DeferredTest::rejectShouldInvokeOtherwiseHandler' started Test 'React\Promise\DeferredTest::rejectShouldInvokeOtherwiseHandler' ended Test 'React\Promise\DeferredTest::doneShouldInvokeRejectionHandler' started Test 'React\Promise\DeferredTest::doneShouldInvokeRejectionHandler' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionThrownByRejectionHandler' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionThrownByRejectionHandler' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorRejectionExceptionWhenRejectionHandlerRejectsWithException' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorRejectionExceptionWhenRejectionHandlerRejectsWithException' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorUnhandledRejectionExceptionWhenRejectionHandlerRetunsPendingPromiseWhichRejectsLater' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorUnhandledRejectionExceptionWhenRejectionHandlerRetunsPendingPromiseWhichRejectsLater' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionProvidedAsRejectionValue' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorExceptionProvidedAsRejectionValue' ended Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorWithDeepNestingPromiseChains' started Test 'React\Promise\DeferredTest::doneShouldTriggerFatalErrorWithDeepNestingPromiseChains' ended Test 'React\Promise\DeferredTest::doneShouldRecoverWhenRejectionHandlerCatchesException' started Test 'React\Promise\DeferredTest::doneShouldRecoverWhenRejectionHandlerCatchesException' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejection' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejection' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsANonPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsANonPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsAPromise' started Test 'React\Promise\DeferredTest::alwaysShouldNotSuppressRejectionWhenHandlerReturnsAPromise' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForRejection' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerThrowsForRejection' ended Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForRejection' started Test 'React\Promise\DeferredTest::alwaysShouldRejectWhenHandlerRejectsForRejection' ended Test 'React\Promise\DeferredTest::cancelShouldCallCancellerWithResolverArguments' started Test 'React\Promise\DeferredTest::cancelShouldCallCancellerWithResolverArguments' ended Test 'React\Promise\DeferredTest::cancelShouldCallCancellerWithoutArgumentsIfNotAccessed' started Test 'React\Promise\DeferredTest::cancelShouldCallCancellerWithoutArgumentsIfNotAccessed' ended Test 'React\Promise\DeferredTest::cancelShouldFulfillPromiseIfCancellerFulfills' started Test 'React\Promise\DeferredTest::cancelShouldFulfillPromiseIfCancellerFulfills' ended Test 'React\Promise\DeferredTest::cancelShouldRejectPromiseIfCancellerRejects' started Test 'React\Promise\DeferredTest::cancelShouldRejectPromiseIfCancellerRejects' ended Test 'React\Promise\DeferredTest::cancelShouldRejectPromiseWithExceptionIfCancellerThrows' started Test 'React\Promise\DeferredTest::cancelShouldRejectPromiseWithExceptionIfCancellerThrows' ended Test 'React\Promise\DeferredTest::cancelShouldCallCancellerOnlyOnceIfCancellerResolves' started Test 'React\Promise\DeferredTest::cancelShouldCallCancellerOnlyOnceIfCancellerResolves' ended Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectIfCancellerDoesNothing' started Test 'React\Promise\DeferredTest::cancelShouldHaveNoEffectIfCancellerDoesNothing' ended Test 'React\Promise\DeferredTest::cancelShouldCallCancellerFromDeepNestedPromiseChain' started Test 'React\Promise\DeferredTest::cancelShouldCallCancellerFromDeepNestedPromiseChain' ended Test 'React\Promise\DeferredTest::cancelCalledOnChildrenSouldOnlyCancelWhenAllChildrenCancelled' started Test 'React\Promise\DeferredTest::cancelCalledOnChildrenSouldOnlyCancelWhenAllChildrenCancelled' ended Test 'React\Promise\DeferredTest::cancelShouldTriggerCancellerWhenAllChildrenCancel' started Test 'React\Promise\DeferredTest::cancelShouldTriggerCancellerWhenAllChildrenCancel' ended Test 'React\Promise\DeferredTest::cancelShouldNotTriggerCancellerWhenCancellingOneChildrenMultipleTimes' started Test 'React\Promise\DeferredTest::cancelShouldNotTriggerCancellerWhenCancellingOneChildrenMultipleTimes' ended Test 'React\Promise\DeferredTest::cancelShouldTriggerCancellerOnlyOnceWhenCancellingMultipleTimes' started Test 'React\Promise\DeferredTest::cancelShouldTriggerCancellerOnlyOnceWhenCancellingMultipleTimes' ended Test 'React\Promise\DeferredTest::cancelShouldAlwaysTriggerCancellerWhenCalledOnRootPromise' started Test 'React\Promise\DeferredTest::cancelShouldAlwaysTriggerCancellerWhenCalledOnRootPromise' ended Test 'React\Promise\DeferredTest::cancelShouldTriggerCancellerWhenFollowerCancels' started Test 'React\Promise\DeferredTest::cancelShouldTriggerCancellerWhenFollowerCancels' ended Test 'React\Promise\DeferredTest::cancelShouldNotTriggerCancellerWhenCancellingOnlyOneFollower' started Test 'React\Promise\DeferredTest::cancelShouldNotTriggerCancellerWhenCancellingOnlyOneFollower' ended Test 'React\Promise\DeferredTest::cancelCalledOnFollowerShouldOnlyCancelWhenAllChildrenAndFollowerCancelled' started Test 'React\Promise\DeferredTest::cancelCalledOnFollowerShouldOnlyCancelWhenAllChildrenAndFollowerCancelled' ended Test 'React\Promise\DeferredTest::cancelShouldNotTriggerCancellerWhenCancellingFollowerButNotChildren' started Test 'React\Promise\DeferredTest::cancelShouldNotTriggerCancellerWhenCancellingFollowerButNotChildren' ended Time: 73 ms, Memory: 6.00 MB OK (107 tests, 182 assertions) ```

Are you seeing something different? If so, I would love find a way to reproduce this locally.

WyriHaximus commented 4 years ago

Together with @CharlotteDunois we've narrowed it down to it only happening when collecting code coverage

WyriHaximus commented 4 years ago

@clue @jsor ok took a bit longer than expected but this PR is now ready for review

WyriHaximus commented 4 years ago

@WyriHaximus Good to see this failure can be avoided by skipping some tests when code coverage is turned on, but I would still like to get a better understanding why this causes issues in the first place.

Same, but bht I'm not sure how easy it is to figure that out, and not sure if it's worth holding 3.0 off for.

Is this something that's somehow bugged in Xdebug and should be reported upstream or does this actually reveal some obscure memory issue in this library?

It only happens when you try to collect code coverage using xdebug from phpunit. This is why I'm added the run without code coverage to ensure we don't run into this bug when we don't collect code coverage. To be honest, I have no clue whether this is in this package, or upstream in xdebuyg

ghost commented 4 years ago

@WyriHaximus Probably worth a try to use pcov instead of xdebug to collect coverage to see whether it's an upstream bug?

WyriHaximus commented 4 years ago

@CharlotteDunois issues still persist when using ext-pcov, so it's either in this package, or in phpunit :(.

WyriHaximus commented 4 years ago

Closed via #162