Fixed plugins and tests

This commit is contained in:
Dmitry Khomutov 2017-01-06 11:14:45 +07:00
commit 712243660c
14 changed files with 384 additions and 59 deletions

View file

@ -8,46 +8,37 @@ use PHPCensor\Helper\Lang;
use PHPCensor\Logging\BuildLogger;
use PHPCensor\Model\Build;
use PHPCensor\Store\BuildStore;
use PHPCensor\Builder;
/**
* Plugin Executor - Runs the configured plugins for a given build stage.
*
* @package PHPCensor\Plugin\Util
*/
class Executor
{
/**
* @var \PHPCensor\Builder
*/
protected $builder;
/**
* @var \PHPCensor\Model\Build
*/
protected $build;
/**
* @var BuildLogger
*/
protected $logger;
/**
* @var Factory
*/
protected $pluginFactory;
/**
* @var BuildStore
*/
protected $store;
/**
* @param Builder $builder
* @param Build $build
* @param Factory $pluginFactory
* @param BuildLogger $logger
*/
public function __construct(Builder $builder, Build $build, BuildLogger $logger)
public function __construct(Factory $pluginFactory, BuildLogger $logger, BuildStore $store = null)
{
$this->builder = $builder;
$this->build = $build;
$this->logger = $logger;
$this->store = StoreFactory::getStore('Build');
$this->pluginFactory = $pluginFactory;
$this->logger = $logger;
$this->store = $store ?: StoreFactory::getStore('Build');
}
/**
@ -87,7 +78,7 @@ class Executor
protected function getBranchSpecificPlugins(&$config, $stage, $pluginsToExecute)
{
/** @var \PHPCensor\Model\Build $build */
$build = $this->build;
$build = $this->pluginFactory->getResourceFor('PHPCensor\Model\Build');
$branch = $build->getBranch();
// If we don't have any branch-specific plugins:
@ -199,7 +190,10 @@ class Executor
}
try {
return (new $class($this->builder, $this->build, $options))->execute();
// Build and run it
$obj = $this->pluginFactory->buildPlugin($class, $options);
return $obj->execute();
} catch (\Exception $ex) {
$this->logger->logFailure(Lang::get('exception') . $ex->getMessage(), $ex);
@ -241,7 +235,7 @@ class Executor
private function getBuildSummary()
{
/** @var Build $build */
$build = $this->build;
$build = $this->pluginFactory->getResourceFor('PHPCensor\Model\Build');
$metas = $this->store->getMeta('plugin-summary', $build->getProjectId(), $build->getId());
return isset($metas[0]['meta_value']) ? $metas[0]['meta_value'] : [];
}
@ -254,7 +248,7 @@ class Executor
private function setBuildSummary($summary)
{
/** @var Build $build */
$build = $this->build;
$build = $this->pluginFactory->getResourceFor('PHPCensor\Model\Build');
$this->store->setMeta($build->getProjectId(), $build->getId(), 'plugin-summary', json_encode($summary));
}
}