mirror of
https://github.com/pestphp/pest.git
synced 2026-03-07 00:07:22 +01:00
Merge branch '2.x' into 3.x
This commit is contained in:
@ -27,7 +27,7 @@ final class TestRepository
|
||||
private array $testCases = [];
|
||||
|
||||
/**
|
||||
* @var array<string, array{0: array<int, string>, 1: array<int, string>, 2: array<int, string|Closure>}>
|
||||
* @var array<string, array{0: array<int, string>, 1: array<int, string>, 2: array<int, array<int, string|Closure>>}>
|
||||
*/
|
||||
private array $uses = [];
|
||||
|
||||
@ -79,12 +79,17 @@ final class TestRepository
|
||||
throw new TestCaseClassOrTraitNotFound($classOrTrait);
|
||||
}
|
||||
|
||||
$hooks = array_map(fn (Closure $hook): array => [$hook], $hooks);
|
||||
|
||||
foreach ($paths as $path) {
|
||||
if (array_key_exists($path, $this->uses)) {
|
||||
$this->uses[$path] = [
|
||||
[...$this->uses[$path][0], ...$classOrTraits],
|
||||
[...$this->uses[$path][1], ...$groups],
|
||||
$this->uses[$path][2] + $hooks,
|
||||
array_map(
|
||||
fn (int $index): array => [...$this->uses[$path][2][$index] ?? [], ...($hooks[$index] ?? [])],
|
||||
range(0, 3),
|
||||
),
|
||||
];
|
||||
} else {
|
||||
$this->uses[$path] = [$classOrTraits, $groups, $hooks];
|
||||
@ -190,10 +195,15 @@ final class TestRepository
|
||||
}
|
||||
}
|
||||
|
||||
$testCase->factoryProxies->add($testCase->filename, 0, '__addBeforeAll', [$hooks[0] ?? null]);
|
||||
$testCase->factoryProxies->add($testCase->filename, 0, '__addBeforeEach', [$hooks[1] ?? null]);
|
||||
$testCase->factoryProxies->add($testCase->filename, 0, '__addAfterEach', [$hooks[2] ?? null]);
|
||||
$testCase->factoryProxies->add($testCase->filename, 0, '__addAfterAll', [$hooks[3] ?? null]);
|
||||
foreach ($testCase->methods as $method) {
|
||||
$method->groups = [...$groups, ...$method->groups];
|
||||
}
|
||||
|
||||
foreach (['__addBeforeAll', '__addBeforeEach', '__addAfterEach', '__addAfterAll'] as $index => $name) {
|
||||
foreach ($hooks[$index] ?? [null] as $hook) {
|
||||
$testCase->factoryProxies->add($testCase->filename, 0, $name, [$hook]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user