|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/irtiweb/CATS/vendor/behat/behat/src/Behat/Testwork/Hook/ |
Upload File : |
<?php
/*
* This file is part of the Behat Testwork.
* (c) Konstantin Kudryashov <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Behat\Testwork\Hook;
use Behat\Testwork\Call\Callee;
use Behat\Testwork\Environment\Environment;
use Behat\Testwork\Environment\EnvironmentManager;
use Behat\Testwork\Hook\Scope\HookScope;
/**
* Finds hooks using provided environments or scopes.
*
* @author Konstantin Kudryashov <[email protected]>
*/
final class HookRepository
{
/**
* @var EnvironmentManager
*/
private $environmentManager;
/**
* Initializes repository.
*
* @param EnvironmentManager $environmentManager
*/
public function __construct(EnvironmentManager $environmentManager)
{
$this->environmentManager = $environmentManager;
}
/**
* Returns all available hooks for a specific environment.
*
* @param Environment $environment
*
* @return Hook[]
*/
public function getEnvironmentHooks(Environment $environment)
{
return array_filter(
$this->environmentManager->readEnvironmentCallees($environment),
function (Callee $callee) {
return $callee instanceof Hook;
}
);
}
/**
* Returns hooks for a specific event.
*
* @param HookScope $scope
*
* @return Hook[]
*/
public function getScopeHooks(HookScope $scope)
{
return array_filter(
$this->getEnvironmentHooks($scope->getEnvironment()),
function (Hook $hook) use ($scope) {
if ($scope->getName() !== $hook->getScopeName()) {
return false;
}
return !($hook instanceof FilterableHook && !$hook->filterMatches($scope));
}
);
}
}