116 lines
3.0 KiB
PHP
116 lines
3.0 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Bundle\FrameworkBundle\Tests\Functional\app;
|
|
|
|
// get the autoload file
|
|
$dir = __DIR__;
|
|
$lastDir = null;
|
|
while ($dir !== $lastDir) {
|
|
$lastDir = $dir;
|
|
|
|
if (file_exists($dir.'/autoload.php')) {
|
|
require_once $dir.'/autoload.php';
|
|
break;
|
|
}
|
|
|
|
if (file_exists($dir.'/autoload.php.dist')) {
|
|
require_once $dir.'/autoload.php.dist';
|
|
break;
|
|
}
|
|
|
|
if (file_exists($dir.'/vendor/autoload.php')) {
|
|
require_once $dir.'/vendor/autoload.php';
|
|
break;
|
|
}
|
|
|
|
$dir = dirname($dir);
|
|
}
|
|
|
|
use Symfony\Component\Config\Loader\LoaderInterface;
|
|
use Symfony\Component\Filesystem\Filesystem;
|
|
use Symfony\Component\HttpKernel\Kernel;
|
|
|
|
/**
|
|
* App Test Kernel for functional tests.
|
|
*
|
|
* @author Johannes M. Schmitt <schmittjoh@gmail.com>
|
|
*/
|
|
class AppKernel extends Kernel
|
|
{
|
|
private $testCase;
|
|
private $rootConfig;
|
|
|
|
public function __construct($testCase, $rootConfig, $environment, $debug)
|
|
{
|
|
if (!is_dir(__DIR__.'/'.$testCase)) {
|
|
throw new \InvalidArgumentException(sprintf('The test case "%s" does not exist.', $testCase));
|
|
}
|
|
$this->testCase = $testCase;
|
|
|
|
$fs = new Filesystem();
|
|
if (!$fs->isAbsolutePath($rootConfig) && !file_exists($rootConfig = __DIR__.'/'.$testCase.'/'.$rootConfig)) {
|
|
throw new \InvalidArgumentException(sprintf('The root config "%s" does not exist.', $rootConfig));
|
|
}
|
|
$this->rootConfig = $rootConfig;
|
|
|
|
parent::__construct($environment, $debug);
|
|
}
|
|
|
|
public function registerBundles()
|
|
{
|
|
if (!file_exists($filename = $this->getRootDir().'/'.$this->testCase.'/bundles.php')) {
|
|
throw new \RuntimeException(sprintf('The bundles file "%s" does not exist.', $filename));
|
|
}
|
|
|
|
return include $filename;
|
|
}
|
|
|
|
public function getRootDir()
|
|
{
|
|
return __DIR__;
|
|
}
|
|
|
|
public function getCacheDir()
|
|
{
|
|
return sys_get_temp_dir().'/'.Kernel::VERSION.'/'.$this->testCase.'/cache/'.$this->environment;
|
|
}
|
|
|
|
public function getLogDir()
|
|
{
|
|
return sys_get_temp_dir().'/'.Kernel::VERSION.'/'.$this->testCase.'/logs';
|
|
}
|
|
|
|
public function registerContainerConfiguration(LoaderInterface $loader)
|
|
{
|
|
$loader->load($this->rootConfig);
|
|
}
|
|
|
|
public function serialize()
|
|
{
|
|
return serialize(array($this->testCase, $this->rootConfig, $this->getEnvironment(), $this->isDebug()));
|
|
}
|
|
|
|
public function unserialize($str)
|
|
{
|
|
$a = unserialize($str);
|
|
$this->__construct($a[0], $a[1], $a[2], $a[3]);
|
|
}
|
|
|
|
protected function getKernelParameters()
|
|
{
|
|
$parameters = parent::getKernelParameters();
|
|
$parameters['kernel.test_case'] = $this->testCase;
|
|
|
|
return $parameters;
|
|
}
|
|
}
|