API CHANGE: Replaced ManifestBuilder::load_test_manifest() calls with new function TestRunner::use_test_manifest(), which pushes a test manifest onto the class loader.

This commit is contained in:
ajshort 2011-03-18 17:38:02 +11:00
parent 184da5bbcc
commit 0c78935db4
4 changed files with 20 additions and 10 deletions

View File

@ -87,7 +87,7 @@ class CodeViewer extends Controller {
parent::init();
if(!Permission::check('ADMIN')) return Security::permissionFailure();
ManifestBuilder::load_test_manifest();
TestRunner::use_test_manifest();
}
public function browse() {

View File

@ -79,7 +79,17 @@ class TestRunner extends Controller {
if (is_string($reporter)) $reporter = new $reporter;
self::$default_reporter = $reporter;
}
/**
* Pushes a class manifest instance that uses tests onto the top of the
* autoloader stack.
*/
public static function use_test_manifest() {
SS_ClassLoader::instance()->pushManifest(new SS_ClassManifest(
BASE_PATH, true, isset($_GET['flush'])
));
}
function init() {
parent::init();
@ -102,7 +112,7 @@ class TestRunner extends Controller {
* Currently excludes PhpSyntaxTest
*/
function all($request, $coverage = false) {
ManifestBuilder::load_test_manifest();
self::use_test_manifest();
$tests = ClassInfo::subclassesFor('SapphireTest');
array_shift($tests);
unset($tests['FunctionalTest']);
@ -122,7 +132,7 @@ class TestRunner extends Controller {
* Run test classes that should be run before build - i.e., everything possible.
*/
function build() {
ManifestBuilder::load_test_manifest();
self::use_test_manifest();
$tests = ClassInfo::subclassesFor('SapphireTest');
array_shift($tests);
unset($tests['FunctionalTest']);
@ -138,7 +148,7 @@ class TestRunner extends Controller {
* Browse all enabled test cases in the environment
*/
function browse() {
ManifestBuilder::load_test_manifest();
self::use_test_manifest();
self::$default_reporter->writeHeader();
self::$default_reporter->writeInfo('Available Tests', false);
if(Director::is_cli()) {
@ -170,7 +180,7 @@ class TestRunner extends Controller {
* Run a coverage test across all modules
*/
function coverageAll($request) {
ManifestBuilder::load_all_classes();
self::use_test_manifest();
$this->all($request, true);
}
@ -197,7 +207,7 @@ class TestRunner extends Controller {
* Run only a single test class or a comma-separated list of tests
*/
function only($request, $coverage = false) {
ManifestBuilder::load_test_manifest();
self::use_test_manifest();
if($request->param('TestCase') == 'all') {
$this->all();
} else {
@ -217,7 +227,7 @@ class TestRunner extends Controller {
* A module is generally a toplevel folder, e.g. "mysite" or "sapphire".
*/
function module($request, $coverage = false) {
ManifestBuilder::load_test_manifest();
self::use_test_manifest();
$classNames = array();
$moduleNames = explode(',', $request->param('ModuleName'));
foreach($moduleNames as $moduleName) {

View File

@ -47,7 +47,7 @@ class FullTestSuite {
* @return Array
*/
public static function get_all_tests() {
ManifestBuilder::load_test_manifest();
TestRunner::use_test_manifest();
$tests = ClassInfo::subclassesFor('SapphireTest');
array_shift($tests);

2
tests/bootstrap.php Executable file → Normal file
View File

@ -32,4 +32,4 @@ if(!class_exists('Object')) {
$_SERVER['REQUEST_URI'] = BASE_URL . '/dev';
ManifestBuilder::load_test_manifest();
TestRunner::use_test_manifest();