restructuring test suite invocation - now we load all test cases into one suite and execute this single suite. this is necessary to be able to generate one xml report and is also a precondition for code coverage analysis(which will follow soon)
This commit is contained in:
parent
967c6d7d3c
commit
5de2a292fc
|
@ -26,39 +26,59 @@ require_once 'simpletest/mock_objects.php';
|
|||
require_once 'simpletest/collector.php';
|
||||
require_once 'simpletest/default_reporter.php';
|
||||
|
||||
// test suite instance
|
||||
$testSuite=new TestSuite("ownCloud Unit Test Suite");
|
||||
|
||||
// prepare the reporter
|
||||
if(OC::$CLI){
|
||||
$reporter=new TextReporter;
|
||||
$test=isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:false;
|
||||
if($test=='xml')
|
||||
{
|
||||
$reporter= new XmlReporter;
|
||||
$test=false;
|
||||
}
|
||||
}else{
|
||||
$reporter='HtmlReporter';
|
||||
$test=isset($_GET['test'])?$_GET['test']:false;
|
||||
}
|
||||
|
||||
//load core test cases
|
||||
loadTests(dirname(__FILE__));
|
||||
loadTests(dirname(__FILE__), $testSuite, $test);
|
||||
|
||||
//load app test cases
|
||||
|
||||
//
|
||||
// TODO: define a list of apps to be enabled + enable them
|
||||
//
|
||||
|
||||
$apps=OC_App::getEnabledApps();
|
||||
foreach($apps as $app){
|
||||
if(is_dir(OC::$SERVERROOT.'/apps/'.$app.'/tests')){
|
||||
loadTests(OC::$SERVERROOT.'/apps/'.$app.'/tests');
|
||||
loadTests(OC::$SERVERROOT.'/apps/'.$app.'/tests', $testSuite, $test);
|
||||
}
|
||||
}
|
||||
|
||||
function loadTests($dir=''){
|
||||
if(OC::$CLI){
|
||||
$reporter='TextReporter';
|
||||
$test=isset($_SERVER['argv'][1])?$_SERVER['argv'][1]:false;
|
||||
}else{
|
||||
$reporter='HtmlReporter';
|
||||
$test=isset($_GET['test'])?$_GET['test']:false;
|
||||
}
|
||||
// run the suite
|
||||
if($testSuite->getSize()>0){
|
||||
$testSuite->run($reporter);
|
||||
}
|
||||
|
||||
// helper below
|
||||
function loadTests($dir,$testSuite, $test){
|
||||
if($dh=opendir($dir)){
|
||||
while($name=readdir($dh)){
|
||||
if($name[0]!='.'){//no hidden files, '.' or '..'
|
||||
$file=$dir.'/'.$name;
|
||||
if(is_dir($file)){
|
||||
loadTests($file);
|
||||
loadTests($file, $testSuite, $test);
|
||||
}elseif(substr($file,-4)=='.php' and $file!=__FILE__){
|
||||
$name=getTestName($file);
|
||||
if($test===false or $test==$name or substr($name,0,strlen($test))==$test){
|
||||
$testCase=new TestSuite($name);
|
||||
$testCase->addFile($file);
|
||||
if($testCase->getSize()>0){
|
||||
$testCase->run(new $reporter());
|
||||
}
|
||||
$extractor = new SimpleFileLoader();
|
||||
$loadedSuite=$extractor->load($file);
|
||||
if ($loadedSuite->getSize() > 0)
|
||||
$testSuite->add($loadedSuite);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue