mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
ENHANCEMENT: refactored runTests, using the new phpunit wrapper classes. (from r111041)
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@112878 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
ce92190465
commit
3006b6ac36
@ -4,24 +4,6 @@
|
||||
* @subpackage testing
|
||||
*/
|
||||
|
||||
// Check that PHPUnit is installed
|
||||
function hasPhpUnit() {
|
||||
$paths = explode(PATH_SEPARATOR, ini_get('include_path'));
|
||||
foreach($paths as $path) {
|
||||
if(substr($path,-1) == DIRECTORY_SEPARATOR) $path = substr($path,0,-1);
|
||||
if(@file_exists("$path/PHPUnit/Framework.php")) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
if(hasPhpUnit()) {
|
||||
require_once 'PHPUnit/Framework.php';
|
||||
require_once 'PHPUnit/Util/Report.php';
|
||||
require_once 'PHPUnit/TextUI/TestRunner.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Controller that executes PHPUnit tests.
|
||||
*
|
||||
@ -34,9 +16,20 @@ require_once 'PHPUnit/TextUI/TestRunner.php';
|
||||
* @subpackage testing
|
||||
*/
|
||||
class TestRunner extends Controller {
|
||||
|
||||
/** @ignore */
|
||||
private static $default_reporter;
|
||||
|
||||
public static $phpunit_wrapper = null;
|
||||
|
||||
static function set_phpunit_wrapper($value) {
|
||||
self::$phpunit_wrapper = $value;
|
||||
}
|
||||
|
||||
static function get_phpunit_wrapper() {
|
||||
return self::$phpunit_wrapper;
|
||||
}
|
||||
|
||||
static $url_handlers = array(
|
||||
'' => 'browse',
|
||||
'coverage/module/$ModuleName' => 'coverageModule',
|
||||
@ -86,7 +79,7 @@ class TestRunner extends Controller {
|
||||
|
||||
if (!self::$default_reporter) self::set_reporter(Director::is_cli() ? 'CliDebugView' : 'DebugView');
|
||||
|
||||
if(!hasPhpUnit()) {
|
||||
if(!PhpUnitWrapper::hasPhpUnit()) {
|
||||
die("Please install PHPUnit using pear");
|
||||
}
|
||||
}
|
||||
@ -265,39 +258,28 @@ class TestRunner extends Controller {
|
||||
// Remove the error handler so that PHPUnit can add its own
|
||||
restore_error_handler();
|
||||
|
||||
/*, array("reportDirectory" => "/Users/sminnee/phpunit-report")*/
|
||||
if(Director::is_cli()) $reporter = new CliTestReporter();
|
||||
else $reporter = new SapphireTestReporter();
|
||||
|
||||
self::$default_reporter->writeHeader("Sapphire Test Runner");
|
||||
if (count($classList) > 1) {
|
||||
self::$default_reporter->writeInfo("All Tests", "Running test cases: ",implode(", ", $classList));
|
||||
} else {
|
||||
} else
|
||||
if (count($classList) == 1) {
|
||||
self::$default_reporter->writeInfo($classList[0], "");
|
||||
}
|
||||
|
||||
$results = new PHPUnit_Framework_TestResult();
|
||||
$results->addListener($reporter);
|
||||
|
||||
if($coverage === true) {
|
||||
foreach(self::$coverage_filter_dirs as $dir) {
|
||||
PHPUnit_Util_Filter::addDirectoryToFilter(BASE_PATH . '/' . $dir);
|
||||
}
|
||||
|
||||
$results->collectCodeCoverageInformation(true);
|
||||
$suite->run($results);
|
||||
|
||||
if(!file_exists(ASSETS_PATH . '/coverage-report')) mkdir(ASSETS_PATH . '/coverage-report');
|
||||
PHPUnit_Util_Report::render($results, ASSETS_PATH . '/coverage-report/');
|
||||
$coverageApp = ASSETS_PATH . '/coverage-report/' . preg_replace('/[^A-Za-z0-9]/','_',preg_replace('/(\/$)|(^\/)/','',Director::baseFolder())) . '.html';
|
||||
$coverageTemplates = ASSETS_PATH . '/coverage-report/' . preg_replace('/[^A-Za-z0-9]/','_',preg_replace('/(\/$)|(^\/)/','',realpath(TEMP_FOLDER))) . '.html';
|
||||
echo "<p>Coverage reports available here:<ul>
|
||||
<li><a href=\"$coverageApp\">Coverage report of the application</a></li>
|
||||
<li><a href=\"$coverageTemplates\">Coverage report of the templates</a></li>
|
||||
</ul>";
|
||||
} else {
|
||||
$suite->run($results);
|
||||
// border case: no tests are available.
|
||||
self::$default_reporter->writeInfo("", "");
|
||||
}
|
||||
|
||||
// perform unit tests (use PhpUnitWrapper or derived versions)
|
||||
$phpunitwrapper = TestRunner::get_phpunit_wrapper();
|
||||
$phpunitwrapper->setSuite($suite);
|
||||
$phpunitwrapper->setCoverageStatus($coverage);
|
||||
|
||||
$phpunitwrapper->runTests();
|
||||
|
||||
// get results of the PhpUnitWrapper class
|
||||
$reporter = $phpunitwrapper->getReporter();
|
||||
$results = $phpunitwrapper->getFrameworkTestResults();
|
||||
|
||||
if(!Director::is_cli()) echo '<div class="trace">';
|
||||
$reporter->writeResults();
|
||||
@ -470,17 +452,3 @@ HTML;
|
||||
DB::set_alternative_database_name(null);
|
||||
}
|
||||
}
|
||||
|
||||
// This class is here to help with documentation.
|
||||
if(!hasPhpUnit()) {
|
||||
/**
|
||||
* PHPUnit is a testing framework that can be installed using PEAR.
|
||||
* It's not bundled with Sapphire, you will need to install it yourself.
|
||||
*
|
||||
* @package sapphire
|
||||
* @subpackage testing
|
||||
*/
|
||||
class PHPUnit_Framework_TestCase {
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user