diff options
author | Bharat Mediratta <bharat@menalto.com> | 2008-12-15 09:51:48 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2008-12-15 09:51:48 +0000 |
commit | 3131662c195bd3e2400f2499a66e084a32c90c71 (patch) | |
tree | 11d82630e4f0fae7a98c58c103cb42132b5e65af | |
parent | b5e6f79f5fec0709e6eeab4f5813f9c60dbec431 (diff) |
Reapply r19116:
Add support for filtering tests down to the Class::method level.
Upstream ticket:
http://dev.kohanaphp.com/ticket/961
-rw-r--r-- | modules/unit_test/libraries/Unit_Test.php | 16 |
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]); + } } } } |