* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FOS\ElasticaBundle\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 */ 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 init() { } 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) { call_user_func_array(array($this, '__construct'), unserialize($str)); } protected function getKernelParameters() { $parameters = parent::getKernelParameters(); $parameters['kernel.test_case'] = $this->testCase; return $parameters; } }