Execute all parent beforeEach and afterEach functions for each test

This commit is contained in:
jshayes
2024-10-11 23:32:45 -04:00
parent 0c57142c03
commit a6cd83665c
13 changed files with 77 additions and 22 deletions

View File

@ -63,12 +63,12 @@ final class BeforeEachCall
$beforeEachTestCall = function (TestCall $testCall) use ($describing): void {
if ($this->describing !== null) {
if ($describing !== $this->describing) {
if ($this->describing !== []) {
if (end($describing) !== end($this->describing)) {
return;
}
if ($describing !== $testCall->describing) {
if (! in_array(end($describing), $testCall->describing, true)) {
return;
}
}
@ -77,7 +77,7 @@ final class BeforeEachCall
};
$beforeEachTestCase = ChainableClosure::boundWhen(
fn (): bool => is_null($describing) || $this->__describing === $describing,
fn (): bool => $describing === [] || in_array(end($describing), $this->__describing, true),
ChainableClosure::bound(fn () => $testCaseProxies->chain($this), $this->closure)->bindTo($this, self::class), // @phpstan-ignore-line
)->bindTo($this, self::class);
@ -96,7 +96,7 @@ final class BeforeEachCall
*/
public function after(Closure $closure): self
{
if ($this->describing === null) {
if ($this->describing === []) {
throw new AfterBeforeTestFunction($this->filename);
}