4 changed files with 214 additions and 0 deletions
@ -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 ?>
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue