[limb-svn] r6065 - in 3.x/trunk/limb/tests_runner: src tests tests/cases
svn at limb-project.com
svn at limb-project.com
Wed Jul 4 14:35:31 MSD 2007
Author: pachanga
Date: 2007-07-04 14:35:31 +0400 (Wed, 04 Jul 2007)
New Revision: 6065
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6065
Added:
3.x/trunk/limb/tests_runner/tests/cases/.setup.php
3.x/trunk/limb/tests_runner/tests/cases/.skipif.php
Removed:
3.x/trunk/limb/tests_runner/tests/cases/.ignore.php
3.x/trunk/limb/tests_runner/tests/cases/.init.php
Modified:
3.x/trunk/limb/tests_runner/src/lmbTestTreeFileNode.class.php
3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeDirNodeTest.class.php
3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeFileNodeTest.class.php
3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeGlobNodeTest.class.php
3.x/trunk/limb/tests_runner/tests/common.inc.php
Log:
-- lmbTestTreeFileNode includes files in a more general manner using regex in order to extract classes from source file. Class format thus is removed and not necessary anymore.
-- tests cleanup and refactoring
-- .init.php => .setup.php(.init.php is considered deprecated now)
-- .ignore.php => .skipif.php(.ignore.php is considered deprecated as well)
Modified: 3.x/trunk/limb/tests_runner/src/lmbTestTreeFileNode.class.php
===================================================================
--- 3.x/trunk/limb/tests_runner/src/lmbTestTreeFileNode.class.php 2007-07-04 08:58:58 UTC (rev 6064)
+++ 3.x/trunk/limb/tests_runner/src/lmbTestTreeFileNode.class.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -9,8 +9,6 @@
require_once(dirname(__FILE__). '/lmbTestTreeTerminalNode.class.php');
require_once(dirname(__FILE__). '/lmbTestUserException.class.php');
- at define('LIMB_TESTS_RUNNER_FILE_CLASS_FORMAT', '%s.class.php');
-
/**
* class lmbTestTreeFileNode.
*
@@ -19,65 +17,34 @@
*/
class lmbTestTreeFileNode extends lmbTestTreeTerminalNode
{
- protected static $class_format;
protected $file;
- protected $class;
function __construct($file)
{
$this->file = $file;
- $this->class = $this->_extractClassName($file);
}
- static function getClassFormat()
- {
- if(!self :: $class_format)
- self :: $class_format = LIMB_TESTS_RUNNER_FILE_CLASS_FORMAT;
- return self :: $class_format;
- }
-
- static function setClassFormat($format)
- {
- $prev = self :: $class_format;
- self :: $class_format = $format;
- return $prev;
- }
-
function getFile()
{
return $this->file;
}
- function getClass()
+ protected function _getClassesDefinedInFile()
{
- return $this->class;
+ if(!preg_match_all('~\Wclass\s+(\w+)~', file_get_contents($this->file), $matches))
+ return array();
+ return $matches[1];
}
- protected function _extractClassName($file)
- {
- $regex = preg_quote(self :: $class_format);
- $regex = '~^' . str_replace('%s', '(.*)', $regex) . '$~';
-
- if(preg_match($regex, basename($file), $m))
- return $m[1];
- }
-
protected function _doCreateTestCase()
{
+ require_once($this->file);
$suite = new TestSuite(basename($this->file));
+ $candidates = $this->_getClassesDefinedInFile();
+ $loader = new SimpleFileLoader();
+ foreach($loader->selectRunnableTests($candidates) as $class)
+ $suite->addTestCase(new $class());
- if(!is_null($this->class))
- {
- require_once($this->file);
- if(!class_exists($this->class))
- throw new lmbTestUserException("Class '{$this->class}' not found in '{$this->file}' file!");
-
- $test = new $this->class();
- $suite->addTestCase($test);
- }
- else
- $suite->addFile($this->file);
-
return $suite;
}
}
Deleted: 3.x/trunk/limb/tests_runner/tests/cases/.ignore.php
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/cases/.ignore.php 2007-07-04 08:58:58 UTC (rev 6064)
+++ 3.x/trunk/limb/tests_runner/tests/cases/.ignore.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -1,13 +0,0 @@
-<?php
-if(!class_exists('lmbTestGroup'))
- return false;
-
-$file = realpath(dirname(__FILE__) . '/../../src/lmbTestGroup.class.php');
-if($res = !in_array($file, get_included_files()))
-{
- echo "\nRunning tests using another installation of TESTS_RUNNER is restricted!\n";
- echo "No tests will be executed(use ../test_self.php instead).\n\n";
-}
-
-return $res;
-?>
\ No newline at end of file
Deleted: 3.x/trunk/limb/tests_runner/tests/cases/.init.php
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/cases/.init.php 2007-07-04 08:58:58 UTC (rev 6064)
+++ 3.x/trunk/limb/tests_runner/tests/cases/.init.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -1,4 +0,0 @@
-<?php
- at define('LIMB_VAR_DIR', dirname(__FILE__) . '/../var');
-require_once(dirname(__FILE__) . '/../../common.inc.php');
-?>
Copied: 3.x/trunk/limb/tests_runner/tests/cases/.setup.php (from rev 6053, 3.x/trunk/limb/tests_runner/tests/cases/.init.php)
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/cases/.setup.php (rev 0)
+++ 3.x/trunk/limb/tests_runner/tests/cases/.setup.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -0,0 +1,4 @@
+<?php
+ at define('LIMB_VAR_DIR', dirname(__FILE__) . '/../var');
+require_once(dirname(__FILE__) . '/../../common.inc.php');
+?>
Copied: 3.x/trunk/limb/tests_runner/tests/cases/.skipif.php (from rev 6053, 3.x/trunk/limb/tests_runner/tests/cases/.ignore.php)
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/cases/.skipif.php (rev 0)
+++ 3.x/trunk/limb/tests_runner/tests/cases/.skipif.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -0,0 +1,13 @@
+<?php
+if(!class_exists('lmbTestGroup'))
+ return false;
+
+$file = realpath(dirname(__FILE__) . '/../../src/lmbTestGroup.class.php');
+if($res = !in_array($file, get_included_files()))
+{
+ echo "\nRunning tests using another installation of TESTS_RUNNER is restricted!\n";
+ echo "No tests will be executed(use ../test_self.php instead).\n\n";
+}
+
+return $res;
+?>
\ No newline at end of file
Modified: 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeDirNodeTest.class.php
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeDirNodeTest.class.php 2007-07-04 08:58:58 UTC (rev 6064)
+++ 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeDirNodeTest.class.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -79,16 +79,13 @@
touch($this->var_dir . '/' . $foo->getFileName() . '.yo');
$prev_filter = lmbTestTreeDirNode :: setFileFilter('*.class.php.yo');
- $prev_format = lmbTestTreeFileNode :: setClassFormat('%s.class.php.yo');
$node = new lmbTestTreeDirNode($this->var_dir);
$nodes = $node->getChildren();
$this->assertEqual(sizeof($nodes), 1);
$this->assertEqual($nodes[0]->getFile(), $this->var_dir . '/' . $foo->getFileName() . '.yo');
- $this->assertEqual($nodes[0]->getClass(), $foo->getClass());
lmbTestTreeDirNode :: setFileFilter($prev_filter);
- lmbTestTreeFileNode :: setClassFormat($prev_format);
}
function testFindChildByPath()
@@ -124,7 +121,7 @@
$this->assertEqual($child_node, $node);
}
- function testCreateTestGroup()
+ function testCreateTestCase()
{
mkdir($this->var_dir . '/a');
@@ -139,13 +136,7 @@
$node = new lmbTestTreeDirNode($this->var_dir);
- //we check for any possible garbage during php includes
- ob_start();
- $group = $node->createTestCase();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, "wow" . $test1->getOutput() . $test2->getOutput() . "hey");
+ $this->_runNodeAndAssertOutput($node, "wow" . $test1->getOutput() . $test2->getOutput() . "hey");
}
function testUseExternalTestLabel()
@@ -171,6 +162,7 @@
file_put_contents($this->var_dir . '/.init.php', '<?php echo "hey!"; ?>');
$node = new lmbTestTreeDirNode($this->var_dir);
+
ob_start();
$group = $node->init();
$str = ob_get_contents();
@@ -192,13 +184,8 @@
file_put_contents($this->var_dir . '/a/b/.skipif.php', '<?php return true; ?>');
$root_node = new lmbTestTreeDirNode($this->var_dir);
- $group = $root_node->createTestCase();
- ob_start();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, $test1->getOutput());
+ $this->_runNodeAndAssertOutput($root_node, $test1->getOutput());
}
function testDontSkipTestsDirectory()
@@ -215,13 +202,8 @@
file_put_contents($this->var_dir . '/a/b/.skipif.php', '<?php return false; ?>');
$root_node = new lmbTestTreeDirNode($this->var_dir);
- $group = $root_node->createTestCase();
- ob_start();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, $test2->getOutput() . $test1->getOutput());
+ $this->_runNodeAndAssertOutput($root_node, $test2->getOutput() . $test1->getOutput());
}
function testInitDoesntHappenIfDirIsSkipped()
@@ -239,13 +221,8 @@
file_put_contents($this->var_dir . '/a/b/.skipif.php', '<?php return true; ?>');
$root_node = new lmbTestTreeDirNode($this->var_dir);
- $group = $root_node->createTestCase();
- ob_start();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, $test1->getOutput());
+ $this->_runNodeAndAssertOutput($root_node, $test1->getOutput());
}
function testSkippedDirFixtureSkippedToo()
@@ -259,13 +236,8 @@
file_put_contents($this->var_dir . '/a/.skipif.php', '<?php return true; ?>');
$root_node = new lmbTestTreeDirNode($this->var_dir);
- $group = $root_node->createTestCase();
- ob_start();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, '');
+ $this->_runNodeAndAssertOutput($root_node, '');
}
}
Modified: 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeFileNodeTest.class.php
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeFileNodeTest.class.php 2007-07-04 08:58:58 UTC (rev 6064)
+++ 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeFileNodeTest.class.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -22,41 +22,52 @@
$this->_rmdir(LIMB_VAR_DIR);
}
- function testCreateTestGroupUsingFileModule()
+ function testCreateTestCase()
{
$foo = new GeneratedTestClass();
$bar = new GeneratedTestClass();
- file_put_contents(LIMB_VAR_DIR . '/module.php',
+ file_put_contents(LIMB_VAR_DIR . '/module1.php',
"<?php\n" . $foo->generateClass() . "\n" . $bar->generateClass() . "\n?>");
- $node = new lmbTestTreeFileNode(LIMB_VAR_DIR . '/module.php');
+ $node = new lmbTestTreeFileNode(LIMB_VAR_DIR . '/module1.php');
- ob_start();
- $group = $node->createTestCase();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, $foo->getOutput() . $bar->getOutput());
+ $this->_runNodeAndAssertOutput($node, $foo->getOutput() . $bar->getOutput());
}
- function testCreateTestGroupUsingClass()
+ function testCreateTestCaseIgnoreJunkClasses()
{
$foo = new GeneratedTestClass();
$bar = new GeneratedTestClass();
- //module must be unique across test cases since require_once is used
- file_put_contents(LIMB_VAR_DIR . '/unique_module_name.php',
- "<?php\n" . $foo->generateClass() . "\n" . $bar->generateClass() . "\n?>");
+ file_put_contents(LIMB_VAR_DIR . '/module2.php',
+ "<?php\n" .
+ "//class Foo extends UnitTestCase\n" .
+ "\$a = 'class Junky';\n" .
+ $foo->generateClass() . "\n" .
+ $bar->generateClass() . "\n?>");
- $node = new lmbTestTreeFileNode(LIMB_VAR_DIR . '/unique_module_name.php');
+ $node = new lmbTestTreeFileNode(LIMB_VAR_DIR . '/module2.php');
- ob_start();
- $group = $node->createTestCase();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, $foo->getOutput() . $bar->getOutput());
+ $this->_runNodeAndAssertOutput($node, $foo->getOutput() . $bar->getOutput());
}
+ function testCreateTestClassesWithSomeClassesAlreadyIncluded()
+ {
+ $foo = new GeneratedTestClass();
+ $bar = new GeneratedTestClass();
+ file_put_contents($foo_file = LIMB_VAR_DIR . '/foo.php', $foo->generate());
+ file_put_contents($bar_file = LIMB_VAR_DIR . '/bar.php',
+ "<?php\n" .
+ "require_once('$foo_file');\n" .
+ $bar->generateClass() .
+ "\n?>");
+
+ $node_bar = new lmbTestTreeFileNode(LIMB_VAR_DIR . '/bar.php');
+ $this->_runNodeAndAssertOutput($node_bar, $bar->getOutput());
+
+ $node_foo = new lmbTestTreeFileNode(LIMB_VAR_DIR . '/foo.php');
+ $this->_runNodeAndAssertOutput($node_foo, $foo->getOutput());
+ }
+
function testGetTestLabel()
{
$foo = new GeneratedTestClass();
Modified: 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeGlobNodeTest.class.php
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeGlobNodeTest.class.php 2007-07-04 08:58:58 UTC (rev 6064)
+++ 3.x/trunk/limb/tests_runner/tests/cases/lmbTestTreeGlobNodeTest.class.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -38,13 +38,8 @@
file_put_contents(LIMB_VAR_DIR . '/b/junk_test.php', $junk->generate()); //should be ignored
$root_node = new lmbTestTreeGlobNode(LIMB_VAR_DIR . '/*/tests');
- $group = $root_node->createTestCase();
- ob_start();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, $test1->getOutput() . $test2->getOutput());
+ $this->_runNodeAndAssertOutput($root_node, $test1->getOutput() . $test2->getOutput());
}
function testNotAGlobMatch()
@@ -59,13 +54,7 @@
$root_node = new lmbTestTreeGlobNode(LIMB_VAR_DIR . '/a');
- $group = $root_node->createTestCase();
-
- ob_start();
- $group->run(new SimpleReporter());
- $str = ob_get_contents();
- ob_end_clean();
- $this->assertEqual($str, $test1->getOutput() . $test2->getOutput());
+ $this->_runNodeAndAssertOutput($root_node, $test1->getOutput() . $test2->getOutput());
}
}
Modified: 3.x/trunk/limb/tests_runner/tests/common.inc.php
===================================================================
--- 3.x/trunk/limb/tests_runner/tests/common.inc.php 2007-07-04 08:58:58 UTC (rev 6064)
+++ 3.x/trunk/limb/tests_runner/tests/common.inc.php 2007-07-04 10:35:31 UTC (rev 6065)
@@ -108,5 +108,15 @@
file_put_contents($file, "<?php\n" . $generated->generateClassFailing() . $extra . "\n?>");
return $generated;
}
+
+ function _runNodeAndAssertOutput($node, $expected)
+ {
+ ob_start();
+ $group = $node->createTestCase();
+ $group->run(new SimpleReporter());
+ $str = ob_get_contents();
+ ob_end_clean();
+ $this->assertEqual($str, $expected);
+ }
}
?>
\ No newline at end of file
More information about the limb-svn
mailing list