/** * Run this test. * * @param xTestRunner $testRunner Test runner. * @return boolean */ public function run(xTestRunner $testRunner) { $this->testRunner = $testRunner; $this->resultPrinter->testHeader($this); $reflection = new \ReflectionClass(get_class($this)); $methods = $reflection->getMethods(); $passed = $count = 0; if (method_exists($this, 'init')) { try { $this->init(); } catch (\Exception $exception) { echo '<tr style="color:white; background:red;"><td>init() failed</td><td><pre>' . $exception . '</pre></td></tr></table>'; return false; } } foreach ($methods as $method) { if (substr($method->name, 0, 4) == 'test') { $this->result = null; $test = $method->name; $name = substr($test, 4); if (count($_GET) && isset($_GET[$name]) && $_GET[$name] !== '') { continue; } $this->testRunner->startCoverageCollector($test); if (method_exists($this, 'setup')) { $this->setup(); } $exception = null; try { $this->{$test}(); } catch (\Exception $exception) { } try { $this->assertException($exception); } catch (xTestException $subException) { } if (is_null($this->result) && !($exception instanceof xTestException && $exception->getCode() == xTestException::FAIL)) { $this->result = (string) $exception; } $count++; if ($this->result === true) { $passed++; } if (method_exists($this, 'teardown')) { $this->teardown(); } $this->setExpectedException(null, '', null); $this->testRunner->stopCoverageCollector(); $this->resultPrinter->testCaseResult($method, $this->getResultColor(), $this->getResultMessage()); } } $this->resultPrinter->testFooter($this, $count, $passed); return $passed == $count; }
/** * Run this test. * * @param xTestRunner $testRunner Test runner. * @return boolean */ public function run(xTestRunner $testRunner) { $testRunner->startCoverageCollector(__CLASS__); $cachePath = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'runtime'; Annotations::$config = array('cache' => new AnnotationCache($cachePath)); if (!is_writable($cachePath)) { die('cache path is not writable: ' . $cachePath); } // manually wipe out the cache: $pattern = Annotations::getManager()->cache->getRoot() . DIRECTORY_SEPARATOR . '*.annotations.php'; foreach (glob($pattern) as $path) { unlink($path); } // disable some annotations not used during testing: Annotations::getManager()->registry['var'] = false; Annotations::getManager()->registry['undefined'] = 'UndefinedAnnotation'; $testRunner->stopCoverageCollector(); return parent::run($testRunner); }