[NodeTypeResolver] Move Container to src, so it can be used in standalone code

This commit is contained in:
Tomas Votruba 2018-08-13 20:41:09 +02:00
parent 8dc06a625f
commit 9a087b3565
5 changed files with 48 additions and 24 deletions

View File

@ -0,0 +1,24 @@
<?php declare(strict_types=1);
namespace Rector\NodeTypeResolver\DependencyInjection;
use Psr\Container\ContainerInterface;
final class NodeTypeResolverContainerFactory
{
public function create(): ContainerInterface
{
$kernel = new NodeTypeResolverKernel();
$kernel->boot();
return $kernel->getContainer();
}
public function createWithConfig(string $config): ContainerInterface
{
$kernel = new NodeTypeResolverKernel($config);
$kernel->boot();
return $kernel->getContainer();
}
}

View File

@ -1,6 +1,6 @@
<?php declare(strict_types=1);
namespace Rector\NodeTypeResolver\Tests\DependencyInjection;
namespace Rector\NodeTypeResolver\DependencyInjection;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\HttpKernel\Bundle\BundleInterface;
@ -8,10 +8,25 @@ use Symfony\Component\HttpKernel\Kernel;
final class NodeTypeResolverKernel extends Kernel
{
/**
* @var null|string
*/
private $config;
public function __construct(?string $config = null)
{
$this->config = $config;
parent::__construct('dev', true);
}
public function registerContainerConfiguration(LoaderInterface $loader): void
{
$loader->load(__DIR__ . '/../../src/config/services.yml');
$loader->load(__DIR__ . '/../config/config.tests.yml');
if ($this->config) {
$loader->load($this->config);
}
}
/**
@ -24,11 +39,11 @@ final class NodeTypeResolverKernel extends Kernel
public function getCacheDir(): string
{
return sys_get_temp_dir() . '/_node_type_resolver_test_cache';
return sys_get_temp_dir() . '/_rector_node_type_resolver_cache';
}
public function getLogDir(): string
{
return sys_get_temp_dir() . '/_node_type_resolver_test_log';
return sys_get_temp_dir() . '/_rector_type_resolver_test_log';
}
}

View File

@ -12,7 +12,7 @@ services:
Rector\NodeTypeResolver\:
resource: '../'
exclude: '../{Contract}'
exclude: '../{Contract,DependencyInjection/NodeTypeResolverKernel.php,DependencyInjection/NodeTypeResolverContainerFactory.php}'
Rector\PhpParser\CurrentNodeProvider: ~

View File

@ -4,7 +4,7 @@ namespace Rector\NodeTypeResolver\Tests;
use PHPUnit\Framework\TestCase;
use Psr\Container\ContainerInterface;
use Rector\NodeTypeResolver\Tests\DependencyInjection\NodeTypeResolverContainerFactory;
use Rector\NodeTypeResolver\DependencyInjection\NodeTypeResolverContainerFactory;
abstract class AbstractNodeTypeResolverContainerAwareTestCase extends TestCase
{
@ -26,7 +26,9 @@ abstract class AbstractNodeTypeResolverContainerAwareTestCase extends TestCase
public function __construct(?string $name = null, array $data = [], string $dataName = '')
{
if (self::$cachedContainer === null) {
self::$cachedContainer = (new NodeTypeResolverContainerFactory())->create();
self::$cachedContainer = (new NodeTypeResolverContainerFactory())->createWithConfig(
__DIR__ . '/config/config.tests.yml'
);
}
$this->container = self::$cachedContainer;

View File

@ -1,17 +0,0 @@
<?php declare(strict_types=1);
namespace Rector\NodeTypeResolver\Tests\DependencyInjection;
use Psr\Container\ContainerInterface;
final class NodeTypeResolverContainerFactory
{
public function create(): ContainerInterface
{
$nodeTypeResolverKernel = new NodeTypeResolverKernel('dev', true);
$nodeTypeResolverKernel->boot();
return $nodeTypeResolverKernel->getContainer();
}
}