Change inner workings of test runner to use different bootstrap file when testing the core.
This commit is contained in:
parent
9bd8755167
commit
41ff7af213
|
|
@ -1,12 +1,4 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
|
||||||
* Laravel - A PHP Framework For Web Artisans
|
|
||||||
*
|
|
||||||
* @package Laravel
|
|
||||||
* @version 3.0.0
|
|
||||||
* @author Taylor Otwell <taylorotwell@gmail.com>
|
|
||||||
* @link http://laravel.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
// Define the directory separator for the environment.
|
// Define the directory separator for the environment.
|
||||||
|
|
@ -18,22 +10,6 @@
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
require 'paths.php';
|
require 'paths.php';
|
||||||
|
|
||||||
// --------------------------------------------------------------
|
|
||||||
// Override the application paths when testing the core.
|
|
||||||
// --------------------------------------------------------------
|
|
||||||
$config = file_get_contents('phpunit.xml');
|
|
||||||
|
|
||||||
if (strpos($config, 'laravel-tests') !== false)
|
|
||||||
{
|
|
||||||
$path = path('bundle').'laravel-tests'.DS;
|
|
||||||
|
|
||||||
set_path('app', $path.'application'.DS);
|
|
||||||
|
|
||||||
set_path('bundle', $path.'bundles'.DS);
|
|
||||||
|
|
||||||
set_path('storage', $path.'storage'.DS);
|
|
||||||
}
|
|
||||||
|
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
// Bootstrap the Laravel core.
|
// Bootstrap the Laravel core.
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,15 @@
|
||||||
|
|
||||||
class Runner extends Task {
|
class Runner extends Task {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The base directory where the tests will be executed.
|
||||||
|
*
|
||||||
|
* A phpunit.xml should also be stored in that directory.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $base_path;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run all of the unit tests for the application.
|
* Run all of the unit tests for the application.
|
||||||
*
|
*
|
||||||
|
|
@ -26,7 +35,8 @@ public function run($bundles = array())
|
||||||
*/
|
*/
|
||||||
public function core()
|
public function core()
|
||||||
{
|
{
|
||||||
$this->stub(path('sys').'tests/cases');
|
$this->base_path = path('sys').'tests'.DS;
|
||||||
|
$this->stub(path('sys').'tests'.DS.'cases');
|
||||||
|
|
||||||
$this->test();
|
$this->test();
|
||||||
}
|
}
|
||||||
|
|
@ -44,6 +54,8 @@ public function bundle($bundles = array())
|
||||||
$bundles = Bundle::names();
|
$bundles = Bundle::names();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->base_path = path('sys').'cli'.DS.'tasks'.DS.'test'.DS;
|
||||||
|
|
||||||
foreach ($bundles as $bundle)
|
foreach ($bundles as $bundle)
|
||||||
{
|
{
|
||||||
// To run PHPUnit for the application, bundles, and the framework
|
// To run PHPUnit for the application, bundles, and the framework
|
||||||
|
|
@ -67,9 +79,9 @@ public function bundle($bundles = array())
|
||||||
protected function test()
|
protected function test()
|
||||||
{
|
{
|
||||||
// We'll simply fire off PHPUnit with the configuration switch
|
// We'll simply fire off PHPUnit with the configuration switch
|
||||||
// pointing to our temporary configuration file. This allows
|
// pointing to our requested configuration file. This allows
|
||||||
// us to flexibly run tests for any setup.
|
// us to flexibly run tests for any setup.
|
||||||
$path = path('base').'phpunit.xml';
|
$path = 'phpunit.xml';
|
||||||
|
|
||||||
// fix the spaced directories problem when using the command line
|
// fix the spaced directories problem when using the command line
|
||||||
// strings with spaces inside should be wrapped in quotes.
|
// strings with spaces inside should be wrapped in quotes.
|
||||||
|
|
@ -97,7 +109,7 @@ protected function stub($directory)
|
||||||
// locations depending on what the developer wants to test.
|
// locations depending on what the developer wants to test.
|
||||||
foreach (array('bootstrap', 'directory') as $item)
|
foreach (array('bootstrap', 'directory') as $item)
|
||||||
{
|
{
|
||||||
$stub = $this->{"swap_{$item}"}($stub, $path, $directory);
|
$stub = $this->{"swap_{$item}"}($stub, $directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
File::put(path('base').'phpunit.xml', $stub);
|
File::put(path('base').'phpunit.xml', $stub);
|
||||||
|
|
@ -107,24 +119,22 @@ protected function stub($directory)
|
||||||
* Swap the bootstrap file in the stub.
|
* Swap the bootstrap file in the stub.
|
||||||
*
|
*
|
||||||
* @param string $stub
|
* @param string $stub
|
||||||
* @param string $path
|
|
||||||
* @param string $directory
|
* @param string $directory
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function swap_bootstrap($stub, $path, $directory)
|
protected function swap_bootstrap($stub, $directory)
|
||||||
{
|
{
|
||||||
return str_replace('{{bootstrap}}', $path.'phpunit.php', $stub);
|
return str_replace('{{bootstrap}}', $this->base_path.'phpunit.php', $stub);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Swap the directory in the stub.
|
* Swap the directory in the stub.
|
||||||
*
|
*
|
||||||
* @param string $stub
|
* @param string $stub
|
||||||
* @param string $path
|
|
||||||
* @param string $directory
|
* @param string $directory
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function swap_directory($stub, $path, $directory)
|
protected function swap_directory($stub, $directory)
|
||||||
{
|
{
|
||||||
return str_replace('{{directory}}', $directory, $stub);
|
return str_replace('{{directory}}', $directory, $stub);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
// Define the directory separator for the environment.
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
define('DS', DIRECTORY_SEPARATOR);
|
||||||
|
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
// Set the core Laravel path constants.
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
require 'paths.php';
|
||||||
|
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
// Override the application paths when testing the core.
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
$path = path('sys').'tests'.DS;
|
||||||
|
|
||||||
|
set_path('app', $path.'application'.DS);
|
||||||
|
|
||||||
|
set_path('bundle', $path.'bundles'.DS);
|
||||||
|
|
||||||
|
set_path('storage', $path.'storage'.DS);
|
||||||
|
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
// Bootstrap the Laravel core.
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
require path('sys').'core.php';
|
||||||
|
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
// Start the default bundle.
|
||||||
|
// --------------------------------------------------------------
|
||||||
|
Laravel\Bundle::start(DEFAULT_BUNDLE);
|
||||||
Loading…
Reference in New Issue