parent
2a5ee9512e
commit
bb5a2a917b
@ -0,0 +1,93 @@ |
||||
<?php |
||||
|
||||
/** |
||||
* ownCloud |
||||
* |
||||
* @author Robin Appelman |
||||
* @copyright 2010 Robin Appelman icewind1991@gmailc.om |
||||
* |
||||
* This library is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
* License as published by the Free Software Foundation; either |
||||
* version 3 of the License, or any later version. |
||||
* |
||||
* This library is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public |
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* base class for unit tests |
||||
*/ |
||||
class OC_TestCase{ |
||||
private $tests; //array of all tests in this test case |
||||
|
||||
public function __construct(){ |
||||
$this->tests=array(); |
||||
$this->results=array(); |
||||
$functions=get_class_methods(get_class($this)); |
||||
$exclude=get_class_methods('OC_TestCase'); |
||||
foreach($functions as $function){ |
||||
if(array_search($function,$exclude)===false){ |
||||
$this->tests[]=$function; |
||||
} |
||||
} |
||||
} |
||||
|
||||
public function getTests(){ |
||||
return $this->tests; |
||||
} |
||||
|
||||
/** |
||||
* function that gets called before each test |
||||
*/ |
||||
private function setup(){ |
||||
} |
||||
|
||||
/** |
||||
* function that gets called after each test |
||||
*/ |
||||
private function tearDown(){ |
||||
} |
||||
|
||||
/** |
||||
* check if the result equals the expected result |
||||
* @param mixed $expected the expected result |
||||
* @param mixed $result the actual result |
||||
* @param string $error (optional) the error message to display if the result isn't expected |
||||
*/ |
||||
protected function assertEquals($expected,$result,$error=''){ |
||||
if($expected!==$result){ |
||||
if($expected===true){ |
||||
$expected='true'; |
||||
} |
||||
if($expected===false){ |
||||
$expected='false'; |
||||
} |
||||
if($result===true){ |
||||
$result='true'; |
||||
} |
||||
if($result===false){ |
||||
$result='false'; |
||||
} |
||||
if($error==''){ |
||||
$error="Unexpected result, expected '$expected' but was '$result'"; |
||||
} |
||||
throw new Exception($error); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* fail the test |
||||
* @param string $error the error message |
||||
*/ |
||||
protected function fail($error){ |
||||
throw new Exception($error); |
||||
} |
||||
} |
@ -0,0 +1,79 @@ |
||||
<?php |
||||
/** |
||||
* ownCloud |
||||
* |
||||
* @author Robin Appelman |
||||
* @copyright 2010 Robin Appelman icewind1991@gmailc.om |
||||
* |
||||
* This library is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
* License as published by the Free Software Foundation; either |
||||
* version 3 of the License, or any later version. |
||||
* |
||||
* This library is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public |
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>. |
||||
* |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* run all test cases |
||||
*/ |
||||
$RUNTIME_NOSETUPFS=true; |
||||
require_once('../lib/base.php'); |
||||
require_once('testcase.php'); |
||||
require_once('template.php'); |
||||
|
||||
$testCases=loadFiles(__DIR__,array('index.php','templates')); |
||||
|
||||
$testResults=array(); |
||||
foreach($testCases as $testCaseClass){ |
||||
$testCase=new $testCaseClass(); |
||||
$results=array(); |
||||
foreach($testCase->getTests() as $test){ |
||||
$testCase->setup(); |
||||
try{ |
||||
$testCase->$test(); |
||||
$results[$test]='Ok'; |
||||
}catch(Exception $e){ |
||||
$results[$test]=$e->getMessage(); |
||||
} |
||||
$testCase->tearDown(); |
||||
} |
||||
$testResults[$testCaseClass]=$results; |
||||
} |
||||
|
||||
$tmpl = new OC_TEMPLATE( 'tests', 'index'); |
||||
$tmpl->assign('tests',$testResults); |
||||
$tmpl->printPage(); |
||||
|
||||
/** |
||||
* recursively load all files in a folder |
||||
* @param string $path |
||||
* @param array $exclude list of files to exclude |
||||
*/ |
||||
function loadFiles($path,$exclude=false){ |
||||
$results=array(); |
||||
if(!$exclude){ |
||||
$exclude=array(); |
||||
} |
||||
$dh=opendir($path); |
||||
while($file=readdir($dh)){ |
||||
if($file!='.' && $file!='..' && array_search($file,$exclude)===false){ |
||||
if(is_file($path.'/'.$file)){ |
||||
$result=require_once($path.'/'.$file); |
||||
$results[]=$result; |
||||
}else{ |
||||
$subResults=loadFiles($path.'/'.$file); |
||||
$results=array_merge($results,$subResults); |
||||
} |
||||
} |
||||
} |
||||
return $results; |
||||
} |
||||
?> |
@ -0,0 +1,31 @@ |
||||
<?php |
||||
class OC_FILEYSYSTEM_Test extends OC_TestCase |
||||
{ |
||||
public function setup(){ |
||||
OC_UTIL::setupFS('testuser','testcase'); |
||||
} |
||||
|
||||
public function isDir(){ |
||||
$this->assertEquals(true, OC_FILESYSTEM::is_dir('/'),'Root is not a directory'); |
||||
} |
||||
|
||||
public function fileExists(){ |
||||
$this->assertEquals(false, OC_FILESYSTEM::file_exists('/dummy'),'Unexpected result with non-existing file'); |
||||
OC_FILESYSTEM::file_put_contents('/dummy','foo'); |
||||
$this->assertEquals(true, OC_FILESYSTEM::file_exists('/dummy'),'Unexpected result with existing file'); |
||||
} |
||||
|
||||
public function mkdir(){ |
||||
OC_FILESYSTEM::mkdir('/dummy'); |
||||
$this->assertEquals(true, OC_FILESYSTEM::file_exists('/dummy'),'No such file or directory after creating folder'); |
||||
$this->assertEquals(true, OC_FILESYSTEM::is_dir('/dummy'),'File created instead of filder'); |
||||
} |
||||
|
||||
public function tearDown(){ |
||||
OC_FILESYSTEM::chroot(''); |
||||
OC_FILESYSTEM::delTree('/testuser'); |
||||
OC_UTIL::tearDownFS(); |
||||
} |
||||
} |
||||
return 'OC_FILEYSYSTEM_Test'; |
||||
?> |
@ -0,0 +1,11 @@ |
||||
<?php foreach($_['tests'] as $name=>$results):?> |
||||
<h2><?php echo $name;?></h2>
|
||||
<ul> |
||||
<?php foreach($results as $test=>$result):?> |
||||
<li> |
||||
<b><?php echo $test;?></b>
|
||||
<?php echo $result;?> |
||||
</il> |
||||
<?php endforeach ?> |
||||
</ul> |
||||
<?php endforeach ?> |
Loading…
Reference in new issue