init
This commit is contained in:
134
vendor/codeception/base/src/Codeception/Extension.php
vendored
Normal file
134
vendor/codeception/base/src/Codeception/Extension.php
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
<?php
|
||||
namespace Codeception;
|
||||
|
||||
use Codeception\Configuration as Config;
|
||||
use Codeception\Event\SuiteEvent;
|
||||
use Codeception\Exception\ModuleRequireException;
|
||||
use Codeception\Lib\Console\Output;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
|
||||
/**
|
||||
* A base class for all Codeception Extensions and GroupObjects
|
||||
*
|
||||
* Available Properties:
|
||||
*
|
||||
* * config: current extension configuration
|
||||
* * options: passed running options
|
||||
*
|
||||
*/
|
||||
abstract class Extension implements EventSubscriberInterface
|
||||
{
|
||||
protected $config = [];
|
||||
protected $options;
|
||||
protected $output;
|
||||
protected $globalConfig;
|
||||
private $modules = [];
|
||||
|
||||
public function __construct($config, $options)
|
||||
{
|
||||
$this->config = array_merge($this->config, $config);
|
||||
$this->options = $options;
|
||||
$this->output = new Output($options);
|
||||
$this->_initialize();
|
||||
}
|
||||
|
||||
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
if (!isset(static::$events)) {
|
||||
return [Events::SUITE_INIT => 'receiveModuleContainer'];
|
||||
}
|
||||
if (isset(static::$events[Events::SUITE_INIT])) {
|
||||
if (!is_array(static::$events[Events::SUITE_INIT])) {
|
||||
static::$events[Events::SUITE_INIT] = [[static::$events[Events::SUITE_INIT]]];
|
||||
}
|
||||
static::$events[Events::SUITE_INIT][] = ['receiveModuleContainer'];
|
||||
} else {
|
||||
static::$events[Events::SUITE_INIT] = 'receiveModuleContainer';
|
||||
}
|
||||
return static::$events;
|
||||
}
|
||||
|
||||
public function receiveModuleContainer(SuiteEvent $e)
|
||||
{
|
||||
$this->modules = $e->getSuite()->getModules();
|
||||
}
|
||||
|
||||
/**
|
||||
* Pass config variables that should be injected into global config.
|
||||
*
|
||||
* @param array $config
|
||||
*/
|
||||
public function _reconfigure($config = [])
|
||||
{
|
||||
if (is_array($config)) {
|
||||
Config::append($config);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* You can do all preparations here. No need to override constructor.
|
||||
* Also you can skip calling `_reconfigure` if you don't need to.
|
||||
*/
|
||||
public function _initialize()
|
||||
{
|
||||
$this->_reconfigure(); // hook for BC only.
|
||||
}
|
||||
|
||||
protected function write($message)
|
||||
{
|
||||
if (!$this->options['silent']) {
|
||||
$this->output->write($message);
|
||||
}
|
||||
}
|
||||
|
||||
protected function writeln($message)
|
||||
{
|
||||
if (!$this->options['silent']) {
|
||||
$this->output->writeln($message);
|
||||
}
|
||||
}
|
||||
|
||||
public function hasModule($name)
|
||||
{
|
||||
return isset($this->modules[$name]);
|
||||
}
|
||||
|
||||
public function getCurrentModuleNames()
|
||||
{
|
||||
return array_keys($this->modules);
|
||||
}
|
||||
|
||||
public function getModule($name)
|
||||
{
|
||||
if (!$this->hasModule($name)) {
|
||||
throw new ModuleRequireException($name, "module is not enabled");
|
||||
}
|
||||
return $this->modules[$name];
|
||||
}
|
||||
|
||||
public function getTestsDir()
|
||||
{
|
||||
return Config::testsDir();
|
||||
}
|
||||
|
||||
public function getLogDir()
|
||||
{
|
||||
return Config::outputDir();
|
||||
}
|
||||
|
||||
public function getDataDir()
|
||||
{
|
||||
return Config::dataDir();
|
||||
}
|
||||
|
||||
public function getRootDir()
|
||||
{
|
||||
return Config::projectDir();
|
||||
}
|
||||
|
||||
public function getGlobalConfig()
|
||||
{
|
||||
return Config::config();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user