Fixes to TestRunner for latest PHPUnit/PHP

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.2.2@51452 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Sam Minnee 2008-03-19 04:25:30 +00:00
parent 12475f1b31
commit 5a05634c2d
2 changed files with 28 additions and 48 deletions

View File

@ -1,5 +1,4 @@
<?php <?php
/** /**
* @package sapphire * @package sapphire
* @subpackage testing * @subpackage testing
@ -34,19 +33,11 @@ if(ManifestBuilder::staleManifest()) ManifestBuilder::compileManifest();
require_once(MANIFEST_FILE); require_once(MANIFEST_FILE);
*/ */
// Check that PHPUnit is installed
$hasPhpUnit = false;
$paths = explode(PATH_SEPARATOR, ini_get('include_path'));
foreach($paths as $path) {
if(@file_exists("$path/PHPUnit/Framework.php")) $hasPhpUnit = true;
}
if($hasPhpUnit) {
/** /**
*/ */
if(hasPhpUnit()) {
require_once 'PHPUnit/Framework.php'; require_once 'PHPUnit/Framework.php';
}
/** /**
* Test case class for the Sapphire framework. * Test case class for the Sapphire framework.
@ -139,7 +130,11 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
$parsedItems[] = $this->parseFixtureVal($item); $parsedItems[] = $this->parseFixtureVal($item);
} }
$obj->write(); $obj->write();
if($obj->many_many($fieldName)) {
$obj->getManyManyComponents($fieldName)->setByIDList($parsedItems);
} else {
$obj->getComponents($fieldName)->setByIDList($parsedItems); $obj->getComponents($fieldName)->setByIDList($parsedItems);
}
} else { } else {
$obj->$fieldName = $this->parseFixtureVal($fieldVal); $obj->$fieldName = $this->parseFixtureVal($fieldVal);
@ -172,20 +167,13 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
// Delete our temporary database // Delete our temporary database
$dbConn = DB::getConn(); $dbConn = DB::getConn();
if($dbConn && substr($dbConn->currentDatabase(),0,5) == 'tmpdb') { if($dbConn && substr($dbConn->currentDatabase(),0,5) == 'tmpdb') {
$dbName = $dbConn->currentDatabase();
if($dbName && DB::query("SHOW DATABASES LIKE '$dbName'")->value()) {
// echo "Deleted temp database " . $dbConn->currentDatabase() . "\n"; // echo "Deleted temp database " . $dbConn->currentDatabase() . "\n";
$dbConn->dropDatabase(); $dbConn->dropDatabase();
} }
} }
} }
} else {
// Stub
/**
* @ignore
* @package sapphire
* @subpackage testing
*/
class SapphireTest extends Object {}
} }
?> ?>

View File

@ -6,18 +6,20 @@
*/ */
// Check that PHPUnit is installed // Check that PHPUnit is installed
$hasPhpUnit = false; function hasPhpUnit() {
$paths = explode(PATH_SEPARATOR, ini_get('include_path')); $paths = explode(PATH_SEPARATOR, ini_get('include_path'));
foreach($paths as $path) { foreach($paths as $path) {
if(@file_exists("$path/PHPUnit/Framework.php")) $hasPhpUnit = true; if(@file_exists("$path/PHPUnit/Framework.php")) return true;
}
return false;
} }
if($hasPhpUnit) {
/** /**
*/ */
if(hasPhpUnit()) {
require_once 'PHPUnit/Framework.php'; require_once 'PHPUnit/Framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php'; require_once 'PHPUnit/TextUI/TestRunner.php';
}
/** /**
* Controller that executes PHPUnit tests * Controller that executes PHPUnit tests
@ -29,10 +31,14 @@ class TestRunner extends Controller {
* Run all test classes * Run all test classes
*/ */
function index() { function index() {
if(hasPhpUnit()) {
$tests = ClassInfo::subclassesFor('SapphireTest'); $tests = ClassInfo::subclassesFor('SapphireTest');
array_shift($tests); array_shift($tests);
$this->runTests($tests); $this->runTests($tests);
} else {
echo "Please install PHPUnit using pear";
}
} }
/** /**
@ -66,21 +72,8 @@ class TestRunner extends Controller {
} }
} }
} else {
/**
* @ignore
* @package sapphire
* @subpackage testing
*/
class TestRunner extends Controller {
function index() {
echo "Please install PHPUnit using pear.";
}
}
// This class is here to help with documentation. // This class is here to help with documentation.
if(!hasPhpUnit()) {
/** /**
* PHPUnit is a testing framework that can be installed using PEAR. * PHPUnit is a testing framework that can be installed using PEAR.
* It's not bundled with Sapphire, you will need to install it yourself. * It's not bundled with Sapphire, you will need to install it yourself.
@ -91,5 +84,4 @@ class TestRunner extends Controller {
class PHPUnit_Framework_TestCase { class PHPUnit_Framework_TestCase {
} }
} }