--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php Sat Sep 24 15:40:41 2011 +0200
@@ -0,0 +1,165 @@
+<?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\Test;
+
+use Symfony\Bundle\FrameworkBundle\Client;
+use Symfony\Component\Finder\Finder;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+
+/**
+ * WebTestCase is the base class for functional tests.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+abstract class WebTestCase extends \PHPUnit_Framework_TestCase
+{
+ static protected $class;
+ static protected $kernel;
+
+ /**
+ * Creates a Client.
+ *
+ * @param array $options An array of options to pass to the createKernel class
+ * @param array $server An array of server parameters
+ *
+ * @return Client A Client instance
+ */
+ static protected function createClient(array $options = array(), array $server = array())
+ {
+ static::$kernel = static::createKernel($options);
+ static::$kernel->boot();
+
+ $client = static::$kernel->getContainer()->get('test.client');
+ $client->setServerParameters($server);
+
+ return $client;
+ }
+
+ /**
+ * Finds the directory where the phpunit.xml(.dist) is stored.
+ *
+ * If you run tests with the PHPUnit CLI tool, everything will work as expected.
+ * If not, override this method in your test classes.
+ *
+ * @return string The directory where phpunit.xml(.dist) is stored
+ */
+ static protected function getPhpUnitXmlDir()
+ {
+ if (!isset($_SERVER['argv']) || false === strpos($_SERVER['argv'][0], 'phpunit')) {
+ throw new \RuntimeException('You must override the WebTestCase::createKernel() method.');
+ }
+
+ $dir = static::getPhpUnitCliConfigArgument();
+ if ($dir === null &&
+ (file_exists(getcwd().DIRECTORY_SEPARATOR.'phpunit.xml') ||
+ file_exists(getcwd().DIRECTORY_SEPARATOR.'phpunit.xml.dist'))) {
+ $dir = getcwd();
+ }
+
+ // Can't continue
+ if ($dir === null) {
+ throw new \RuntimeException('Unable to guess the Kernel directory.');
+ }
+
+ if (!is_dir($dir)) {
+ $dir = dirname($dir);
+ }
+
+ return $dir;
+ }
+
+ /**
+ * Finds the value of configuration flag from cli
+ *
+ * PHPUnit will use the last configuration argument on the command line, so this only returns
+ * the last configuration argument
+ *
+ * @return string The value of the phpunit cli configuration option
+ */
+ static private function getPhpUnitCliConfigArgument()
+ {
+ $dir = null;
+ $reversedArgs = array_reverse($_SERVER['argv']);
+ foreach ($reversedArgs as $argIndex=>$testArg) {
+ if ($testArg === '-c' || $testArg === '--configuration') {
+ $dir = realpath($reversedArgs[$argIndex - 1]);
+ break;
+ } elseif (strpos($testArg, '--configuration=') === 0) {
+ $argPath = substr($testArg, strlen('--configuration='));
+ $dir = realpath($argPath);
+ break;
+ }
+ }
+
+ return $dir;
+ }
+
+ /**
+ * Attempts to guess the kernel location.
+ *
+ * When the Kernel is located, the file is required.
+ *
+ * @return string The Kernel class name
+ */
+ static protected function getKernelClass()
+ {
+ $dir = isset($_SERVER['KERNEL_DIR']) ? $_SERVER['KERNEL_DIR'] : static::getPhpUnitXmlDir();
+
+ $finder = new Finder();
+ $finder->name('*Kernel.php')->depth(0)->in($dir);
+ if (!count($finder)) {
+ throw new \RuntimeException('You must override the WebTestCase::createKernel() method.');
+ }
+
+ $file = current(iterator_to_array($finder));
+ $class = $file->getBasename('.php');
+
+ require_once $file;
+
+ return $class;
+ }
+
+ /**
+ * Creates a Kernel.
+ *
+ * Available options:
+ *
+ * * environment
+ * * debug
+ *
+ * @param array $options An array of options
+ *
+ * @return HttpKernelInterface A HttpKernelInterface instance
+ */
+ static protected function createKernel(array $options = array())
+ {
+ if (null === static::$class) {
+ static::$class = static::getKernelClass();
+ }
+
+ return new static::$class(
+ isset($options['environment']) ? $options['environment'] : 'test',
+ isset($options['debug']) ? $options['debug'] : true
+ );
+ }
+
+ /**
+ * Shuts the kernel down if it was used in the test.
+ */
+ protected function tearDown()
+ {
+ if (null !== static::$kernel) {
+ static::$kernel->shutdown();
+ }
+ }
+}