/** * Starts the Code Coverage. */ public static function start() { /** * Simpletest Code Coverage depends on xdebug. * * Ensure that the xdebug extension is loaded. */ if (false === extension_loaded('xdebug')) { die('Code Coverage needs Xdebug extension. Not loaded!'); } if (false === function_exists("xdebug_start_code_coverage")) { die('Code Coverage needs the method xdebug_start_code_coverage. Not found!'); } /** * Simpletest Code Coverage depends on sqlite. * * Ensure that the sqlite extension is loaded. */ if (false === class_exists('SQLiteDatabase')) { echo 'Code Coverage needs the php extension SQLITE. Not loaded!'; } /** * Setup Simpletest Code Coverage. */ require_once 'simpletest/extensions/coverage/coverage.php'; $coverage = new CodeCoverage(); $coverage->log = 'coverage.sqlite'; $coverage->root = TESTSUBJECT_DIR; $coverage->includes[] = '.*\\.php$'; $coverage->excludes[] = 'simpletest'; $coverage->excludes[] = 'tests'; $coverage->excludes[] = 'libraries'; $coverage->excludes[] = 'coverage-report'; $coverage->excludes[] = 'sweety'; $coverage->excludes[] = './.*.php'; $coverage->maxDirectoryDepth = 1; $coverage->resetLog(); $coverage->writeSettings(); /** * Finally: let's start the Code Coverage. */ $coverage->startCoverage(); #echo 'Code Coverage started...'; self::$coverage = $coverage; }
function stop_coverage() { # hack until i can think of a way to run tests first and w/o exiting $autorun = function_exists("run_local_tests"); if ($autorun) { $result = run_local_tests(); } CodeCoverage::getInstance()->stopCoverage(); if ($autorun) { exit($result ? 0 : 1); } }
public static function getInstance() { if (self::$instance == null) { self::$instance = new CodeCoverage(); self::$instance->readSettings(); } return self::$instance; }
<?php /** * Generate a code coverage report * * @package SimpleTest * @subpackage Extensions */ # optional arguments: # --reportDir=some/directory the default is ./coverage-report # --title='My Coverage Report' title the main page of your report /**#@+ * include coverage files */ require_once dirname(__FILE__) . '/../coverage_utils.php'; require_once dirname(__FILE__) . '/../coverage.php'; require_once dirname(__FILE__) . '/../coverage_reporter.php'; /**#@-*/ $cc = CodeCoverage::getInstance(); $cc->readSettings(); $handler = new CoverageDataHandler($cc->log); $report = new CoverageReporter(); $args = CoverageUtils::parseArguments($_SERVER['argv']); $report->reportDir = CoverageUtils::issetOr($args['reportDir'], 'coverage-report'); $report->title = CoverageUtils::issetOr($args['title'], "Simpletest Coverage"); $report->coverage = $handler->read(); $report->untouched = $handler->readUntouchedFiles(); $report->generate();
function testSettingsCanBeReadWrittenToDisk() { $settings_file = 'banana-boat-coverage-settings-test.dat'; $coverage = new CodeCoverage(); $coverage->log = '/banana/boat'; $coverage->settingsFile = $settings_file; $coverage->writeSettings(); $actual = new CodeCoverage(); $actual->settingsFile = $settings_file; $actual->readSettings(); $this->assertEqual('/banana/boat', $actual->log); }
<?php /** * Initialize code coverage data collection, next step is to run your tests * with ini setting auto_prepend_file=autocoverage.php ... * * @package SimpleTest * @subpackage Extensions */ # optional arguments: # --include=<some filepath regexp> these files should be included coverage report # --exclude=<come filepath regexp> these files should not be included in coverage report # --maxdepth=2 when considering which file were not touched, scan directories # # Example: # php-coverage-open.php --include='.*\.php$' --include='.*\.inc$' --exclude='.*/tests/.*' /**#@+ * include coverage files */ require_once dirname(__FILE__) . '/../coverage_utils.php'; CoverageUtils::requireSqlite(); require_once dirname(__FILE__) . '/../coverage.php'; /**#@-*/ $cc = new CodeCoverage(); $cc->log = 'coverage.sqlite'; $args = CoverageUtils::parseArguments($_SERVER['argv'], TRUE); $cc->includes = CoverageUtils::issetOr($args['include[]'], array('.*\\.php$')); $cc->excludes = CoverageUtils::issetOr($args['exclude[]']); $cc->maxDirectoryDepth = (int) CoverageUtils::issetOr($args['maxdepth'], '1'); $cc->resetLog(); $cc->writeSettings();
public function testSettingsCanBeReadWrittenToDisk() { $settings_file = '0-coverage-settings-test.dat'; $coverage = new CodeCoverage(); $coverage->log = sys_get_temp_dir(); $coverage->settingsFile = $settings_file; $coverage->writeSettings(); $actual = new CodeCoverage(); $actual->settingsFile = $settings_file; $actual->readSettings(); $this->assertEqual(sys_get_temp_dir(), $actual->log); unlink($settings_file); }