|
@@ -0,0 +1,113 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+/*
|
|
|
+ * This file is part of the Symfony framework.
|
|
|
+ *
|
|
|
+ * (c) Fabien Potencier <fabien@symfony.com>
|
|
|
+ *
|
|
|
+ * This source file is subject to the MIT license that is bundled
|
|
|
+ * with this source code in the file LICENSE.
|
|
|
+ */
|
|
|
+
|
|
|
+namespace Symfony\Bundle\FrameworkBundle\Tests\Functional;
|
|
|
+
|
|
|
+// get the autoload file
|
|
|
+$dir = __DIR__;
|
|
|
+$lastDir = null;
|
|
|
+while ($dir !== $lastDir) {
|
|
|
+ $lastDir = $dir;
|
|
|
+
|
|
|
+ if (is_file($dir.'/autoload.php')) {
|
|
|
+ require_once $dir.'/autoload.php';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (is_file($dir.'/autoload.php.dist')) {
|
|
|
+ require_once $dir.'/autoload.php.dist';
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ $dir = dirname($dir);
|
|
|
+}
|
|
|
+
|
|
|
+use Symfony\Component\HttpKernel\Util\Filesystem;
|
|
|
+use Symfony\Component\Config\Loader\LoaderInterface;
|
|
|
+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) && !is_file($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 (!is_file($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().'/'.$this->testCase.'/cache/'.$this->environment;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getLogDir()
|
|
|
+ {
|
|
|
+ return sys_get_temp_dir().'/'.$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;
|
|
|
+ }
|
|
|
+}
|