Permalink
Browse files

Revert "API CHANGE Removing support for PHPUnit 3.4 (3.5.0 has been r…

…eleased in Sept 2010). Removing PhpUnitWrapper_3_4, and adding better version detection." - too many complications with our build environments running mixed versions of SilverStripe

This reverts commit 23e342c.
  • Loading branch information...
chillu committed Mar 11, 2011
1 parent 0a4aa9d commit 9d10e88ea5139766ab4696c3d06a32d52504c386
Showing with 84 additions and 7 deletions.
  1. +1 −1 dev/TestRunner.php
  2. +18 −6 dev/phpunit/PhpUnitWrapper.php
  3. +63 −0 dev/phpunit/PhpUnitWrapper_3_4.php
  4. +2 −0 dev/phpunit/PhpUnitWrapper_3_5.php
View
@@ -89,7 +89,7 @@ function init() {
if (!self::$default_reporter) self::set_reporter(Director::is_cli() ? 'CliDebugView' : 'DebugView');
if(!PhpUnitWrapper::has_php_unit()) {
- die("Please install PHPUnit 3.5.0 or newer using pear\n");
+ die("Please install PHPUnit using pear");
}
}
@@ -22,7 +22,7 @@ function fileExistsInIncludePath($filename) {
/**
* PHPUnit Wrapper class.
* Base class for PHPUnit wrapper classes to support different PHPUnit versions.
- * The current implementation supports PHPUnit 3.5.
+ * The current implementation supports PHPUnit 3.4 and PHPUnit 3.5.
*/
class PhpUnitWrapper implements IPhpUnitWrapper {
@@ -48,6 +48,13 @@ class PhpUnitWrapper implements IPhpUnitWrapper {
* @var PHPUnit_Framework_TestListener
*/
private $reporter = null;
+
+ /**
+ * Shows the version, implemented by the phpunit-wrapper class instance.
+ * This instance implements no phpunit, the version is null.
+ * @var String
+ */
+ protected $version = null;
private static $phpunit_wrapper = null;
@@ -116,10 +123,11 @@ public function setFrameworkTestResults($value) {
}
/**
+ * Getter for $version (@see $version).
* @return String
*/
public function getVersion() {
- return (method_exists('PHPUnit_Runner_Version', 'id')) ? PHPUnit_Runner_Version::id() : null;
+ return $this->version;
}
/**
@@ -132,21 +140,25 @@ static function inst() {
if (self::$phpunit_wrapper == null) {
if (fileExistsInIncludePath("/PHPUnit/Autoload.php")) {
self::$phpunit_wrapper = new PhpUnitWrapper_3_5();
+ } else
+ if (fileExistsInIncludePath("/PHPUnit/Framework.php")) {
+ self::$phpunit_wrapper = new PhpUnitWrapper_3_4();
} else {
- self::$phpunit_wrapper = new PhpUnitWrapper();
+ self::$phpunit_wrapper = new PhpUnitWrapper();
}
self::$phpunit_wrapper->init();
+
}
-
return self::$phpunit_wrapper;
}
/**
+ * Returns true if one of the two supported PHPUNIT versions is installed.
+ *
* @return boolean true if PHPUnit has been installed on the environment.
*/
static function has_php_unit() {
- $version = self::inst()->getVersion();
- return ($version && version_compare($version, '3.5.0', '>='));
+ return (Bool) self::inst()->getVersion();
}
/**
@@ -0,0 +1,63 @@
+<?php
+/**
+* @package sapphire
+* @subpackage dev
+*/
+
+/**
+ * PHPUnit Wrapper class. Implements the correct behaviour for PHPUnit V3.4.
+ */
+class PhpUnitWrapper_3_4 extends PhpUnitWrapper {
+
+ protected $version = 'PhpUnit V3.4';
+
+ /**
+ * Initialise the wrapper class.
+ */
+ public function init() {
+ parent::init();
+ require_once 'PHPUnit/Framework.php';
+ require_once 'PHPUnit/Util/Report.php';
+ require_once 'PHPUnit/TextUI/TestRunner.php';
+ }
+
+ /**
+ * Overwrites beforeRunTests. Initiates coverage-report generation if
+ * $coverage has been set to true (@see setCoverageStatus).
+ */
+ protected function beforeRunTests() {
+
+ if($this->getCoverageStatus()) {
+ // blacklist selected folders from coverage report
+ foreach(TestRunner::$coverage_filter_dirs as $dir) {
+ PHPUnit_Util_Filter::addDirectoryToFilter(BASE_PATH . '/' . $dir);
+ }
+ $this->getFrameworkTestResults()->collectCodeCoverageInformation(true);
+ }
+ }
+
+ /**
+ * Overwrites aferRunTests. Creates coverage report and clover report
+ * if required.
+ */
+ protected function aferRunTests() {
+
+ if($this->getCoverageStatus()) {
+
+ if(!file_exists(ASSETS_PATH . '/coverage-report')) {
+ mkdir(ASSETS_PATH . '/coverage-report');
+ }
+
+ $ret = PHPUnit_Util_Report::render($this->getFrameworkTestResults(), ASSETS_PATH . '/coverage-report/');
+
+ $coverageApp = ASSETS_PATH . '/coverage-report/' . preg_replace('/[^A-Za-z0-9]/','_',preg_replace('/(\/$)|(^\/)/','',Director::baseFolder())) . '.html';
+ $coverageTemplates = ASSETS_PATH . '/coverage-report/' . preg_replace('/[^A-Za-z0-9]/','_',preg_replace('/(\/$)|(^\/)/','',realpath(TEMP_FOLDER))) . '.html';
+
+ echo "<p>Coverage reports available here:<ul>
+ <li><a href=\"$coverageApp\">Coverage report of the application</a></li>
+ <li><a href=\"$coverageTemplates\">Coverage report of the templates</a></li>
+ </ul>";
+ }
+ }
+
+}
@@ -6,6 +6,8 @@
class PhpUnitWrapper_3_5 extends PhpUnitWrapper {
+ protected $version = 'PhpUnit V3.5';
+
protected $coverage = null;
protected static $test_name = 'SapphireTest';

0 comments on commit 9d10e88

Please sign in to comment.