From f3467a3337eb57cedc0de14a55560221724694c9 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Mon, 28 May 2012 18:31:48 +1200 Subject: [PATCH] MINOR: Added test listeners to support TeamCity/PHPUnit executions. --- dev/SilverStripeListener.php | 45 +++++++++++++++++++++++++++ dev/TeamCityListener.php | 59 ++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 dev/SilverStripeListener.php create mode 100644 dev/TeamCityListener.php diff --git a/dev/SilverStripeListener.php b/dev/SilverStripeListener.php new file mode 100644 index 000000000..c6c5c01a1 --- /dev/null +++ b/dev/SilverStripeListener.php @@ -0,0 +1,45 @@ +getName(); + if(!$this->isValidClass($name)) return; + + $class = new $name(); + $class->setUpOnce(); + } + + public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { + $name = $suite->getName(); + if(!$this->isValidClass($name)) return; + + $class = new $name(); + $class->tearDownOnce(); + } + + public function startTest(PHPUnit_Framework_Test $test) { + } + + public function endTest(PHPUnit_Framework_Test $test, $time) { + } + + public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { + } + + public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { + } + + public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { + } + + public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { + } +} diff --git a/dev/TeamCityListener.php b/dev/TeamCityListener.php new file mode 100644 index 000000000..5d24abfbe --- /dev/null +++ b/dev/TeamCityListener.php @@ -0,0 +1,59 @@ + '|n', + "\r" => '|r', + "[" => '|[', + "]" => '|]', + "'" => "|'", + "|" => '||' + )); + } + + public function startTestSuite(PHPUnit_Framework_TestSuite $suite) { + echo "##teamcity[testSuiteStarted name='{$suite->getName()}']\n"; + } + + public function endTestSuite(PHPUnit_Framework_TestSuite $suite) { + echo "##teamcity[testSuiteFinished name='{$suite->getName()}']\n"; + } + + public function startTest(PHPUnit_Framework_Test $test) { + $class = get_class($test); + echo "##teamcity[testStarted name='{$class}.{$test->getName()}']\n"; + } + + public function endTest(PHPUnit_Framework_Test $test, $time) { + $class = get_class($test); + echo "##teamcity[testFinished name='{$class}.{$test->getName()}' duration='$time']\n"; + } + + public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) { + $class = get_class($test); + $message = $this->escape("Exception: {$e->getMessage()}"); + $trace = $this->escape($e->getTraceAsString()); + echo "##teamcity[testFailed type='exception' name='{$class}.{$test->getName()}' message='$message' details='$trace']\n"; + } + + public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) { + $class = get_class($test); + $message = $this->escape($e->getMessage()); + $trace = $this->escape($e->getTraceAsString()); + echo "##teamcity[testFailed type='failure' name='{$class}.{$test->getName()}' message='$message' details='$trace']\n"; + } + + public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) { + // NOP + } + + public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) { + $class = get_class($test); + $message = $this->escape($e->getMessage()); + echo "##teamcity[testIgnored name='{$class}.{$test->getName()}' message='$message']\n"; + } +}