summaryrefslogtreecommitdiff
path: root/modules/unit_test/libraries
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-12-15 09:51:48 +0000
committerBharat Mediratta <bharat@menalto.com>2008-12-15 09:51:48 +0000
commit3131662c195bd3e2400f2499a66e084a32c90c71 (patch)
tree11d82630e4f0fae7a98c58c103cb42132b5e65af /modules/unit_test/libraries
parentb5e6f79f5fec0709e6eeab4f5813f9c60dbec431 (diff)
Reapply r19116:
Add support for filtering tests down to the Class::method level. Upstream ticket: http://dev.kohanaphp.com/ticket/961
Diffstat (limited to 'modules/unit_test/libraries')
-rw-r--r--modules/unit_test/libraries/Unit_Test.php16
1 files changed, 13 insertions, 3 deletions
diff --git a/modules/unit_test/libraries/Unit_Test.php b/modules/unit_test/libraries/Unit_Test.php
index 54366cb7..cf8b85f0 100644
--- a/modules/unit_test/libraries/Unit_Test.php
+++ b/modules/unit_test/libraries/Unit_Test.php
@@ -23,13 +23,14 @@ class Unit_Test_Core {
/**
* Sets the test path(s), runs the tests inside and stores the results.
*
- * @param string(s) test path(s)
+ * @param array test path(s)
+ * @param string filter (regular expression)
* @return void
*/
- public function __construct()
+ public function __construct($extra_paths=array(), $filter=null)
{
// Merge possible default test path(s) from config with the rest
- $paths = array_merge(func_get_args(), Kohana::config('unit_test.paths', FALSE, FALSE));
+ $paths = array_merge($extra_paths, Kohana::config('unit_test.paths', FALSE, FALSE));
// Normalize all test paths
foreach ($paths as $path)
@@ -121,6 +122,10 @@ class Unit_Test_Core {
if ( ! $method->isPublic() OR $method->isStatic() OR $method->getNumberOfRequiredParameters() !== 0)
continue;
+ if ($filter && !preg_match("/$filter/i", "$class::{$method->getName()}")) {
+ continue;
+ }
+
// Test methods should be suffixed with "_test"
if (substr($method_name = $method->getName(), -5) !== '_test')
continue;
@@ -183,6 +188,11 @@ class Unit_Test_Core {
// Cleanup
unset($object);
}
+
+ if ($filter && $this->stats[$class]['total'] == 0) {
+ unset($this->results[$class]);
+ unset($this->stats[$class]);
+ }
}
}
}