function run() { $res = NULL; if (PHPUnitUtil::$installedVersion == 3) { require_once 'PHPUnit/Framework/TestSuite.php'; $res = new PHPUnit_Framework_TestResult(); } else { require_once 'PHPUnit2/Framework/TestSuite.php'; $res = new PHPUnit2_Framework_TestResult(); } if ($this->codecoverage) { $res->collectCodeCoverageInformation(TRUE); } foreach ($this->formatters as $formatter) { $res->addListener($formatter); } $this->suite->run($res); if ($this->codecoverage) { $coverageInformation = $res->getCodeCoverageInformation(); if (PHPUnitUtil::$installedVersion == 3) { CoverageMerger::merge($this->project, array($coverageInformation[0]['files'])); } else { CoverageMerger::merge($this->project, $coverageInformation); } } if ($res->errorCount() != 0) { $this->retCode = self::ERRORS; } else { if ($res->failureCount() != 0 || $res->notImplementedCount() != 0) { $this->retCode = self::FAILURES; } } }
function main() { $files = $this->getFilenames(); $this->log("Merging " . count($files) . " coverage files"); foreach ($files as $file) { $coverageInformation = unserialize(file_get_contents($file)); CoverageMerger::merge($this->project, array($coverageInformation)); } }
public function testSimpleMerge() { $firstFile = PARATEST_ROOT . '/src/ParaTest/Logging/LogInterpreter.php'; $secondFile = PARATEST_ROOT . '/src/ParaTest/Logging/MetaProvider.php'; $coverage1 = new \PHP_CodeCoverage(); $coverage1->append(array($firstFile => array(35 => 1), $secondFile => array(34 => 1)), 'Test1'); $coverage2 = new \PHP_CodeCoverage(); $coverage2->append(array($firstFile => array(35 => 1, 36 => 1)), 'Test2'); $merger = new CoverageMerger(); $merger->addCoverage($coverage1); $merger->addCoverage($coverage2); $coverage = $merger->getCoverage(); $data = $coverage->getData(); $this->assertEquals(2, count($data[$firstFile][35])); $this->assertEquals('Test1', $data[$firstFile][35][0]); $this->assertEquals('Test2', $data[$firstFile][35][1]); $this->assertEquals(1, count($data[$firstFile][36])); $this->assertEquals('Test2', $data[$firstFile][36][0]); $this->assertEquals(1, count($data[$secondFile][34])); $this->assertEquals('Test1', $data[$secondFile][34][0]); }
static function merge($project, $codeCoverageInformation) { $database = new PhingFile($project->getProperty('coverage.database')); $props = new Properties(); $props->load($database); $coverageTotal = $codeCoverageInformation; foreach ($coverageTotal as $coverage) { foreach ($coverage as $filename => $coverageFile) { $filename = strtolower($filename); if ($props->getProperty($filename) != null) { $file = unserialize($props->getProperty($filename)); $left = $file['coverage']; $right = $coverageFile; $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $right); $file['coverage'] = $coverageMerged; $props->setProperty($filename, serialize($file)); } } } $props->store($database); }
function run() { $res = new PHPUnit2_Framework_TestResult(); if ($this->codecoverage) { $res->collectCodeCoverageInformation(TRUE); } foreach ($this->formatters as $formatter) { $res->addListener($formatter); } $this->suite->run($res); if ($this->codecoverage) { CoverageMerger::merge($this->project, $res->getCodeCoverageInformation()); } if ($res->errorCount() != 0) { $this->retCode = self::ERRORS; } else { if ($res->failureCount() != 0 || $res->notImplementedCount() != 0) { $this->retCode = self::FAILURES; } } }
/** * Run a test * * @param PHPUnit_Framework_TestSuite $suite */ public function run(PHPUnit_Framework_TestSuite $suite) { $res = new PHPUnit_Framework_TestResult(); if ($this->codecoverage) { $whitelist = CoverageMerger::getWhiteList($this->project); $this->codecoverage->filter()->addFilesToWhiteList($whitelist); $res->setCodeCoverage($this->codecoverage); } $res->addListener($this); foreach ($this->formatters as $formatter) { $res->addListener($formatter); } /* Set PHPUnit error handler */ if ($this->useCustomErrorHandler) { $oldErrorHandler = set_error_handler(array($this, 'handleError'), E_ALL | E_STRICT); } $version = PHPUnit_Runner_Version::id(); if (version_compare($version, '4.0.0') >= 0) { $this->injectFilters($suite); $suite->run($res); } else { $suite->run($res, false, $this->groups, $this->excludeGroups, $this->processIsolation); } foreach ($this->formatters as $formatter) { $formatter->processResult($res); } /* Restore Phing error handler */ if ($this->useCustomErrorHandler) { restore_error_handler(); } if ($this->codecoverage) { CoverageMerger::merge($this->project, $this->codecoverage->getData()); } $this->checkResult($res); }
/** * Run a test */ public function run(PHPUnit_Framework_TestSuite $suite) { $res = new PHPUnit_Framework_TestResult(); if ($this->codecoverage) { $whitelist = CoverageMerger::getWhiteList($this->project); $this->codecoverage->filter()->addFilesToWhiteList($whitelist); $res->setCodeCoverage($this->codecoverage); } $res->addListener($this); foreach ($this->formatters as $formatter) { $res->addListener($formatter); } /* Set PHPUnit error handler */ if ($this->useCustomErrorHandler) { $oldErrorHandler = set_error_handler(array($this, 'handleError'), E_ALL | E_STRICT); } $suite->run($res, false, $this->groups, $this->excludeGroups, $this->processIsolation); foreach ($this->formatters as $formatter) { $formatter->processResult($res); } /* Restore Phing error handler */ if ($this->useCustomErrorHandler) { restore_error_handler(); } if ($this->codecoverage) { CoverageMerger::merge($this->project, $this->codecoverage->getData()); } if ($res->errorCount() != 0) { $this->retCode = self::ERRORS; } else { if ($res->failureCount() != 0) { $this->retCode = self::FAILURES; } else { if ($res->notImplementedCount() != 0) { $this->retCode = self::INCOMPLETES; } else { if ($res->skippedCount() != 0) { $this->retCode = self::SKIPPED; } } } } }
static function merge($project, $codeCoverageInformation) { $coverageDatabase = $project->getProperty('coverage.database'); if (!$coverageDatabase) { throw new BuildException("Property coverage.database is not set - please include coverage-setup in your build file"); } $database = new PhingFile($coverageDatabase); $props = new Properties(); $props->load($database); $coverageTotal = $codeCoverageInformation; foreach ($coverageTotal as $filename => $data) { if (version_compare(PHPUnit_Runner_Version::id(), '3.5.0') >= 0) { $ignoreLines = PHP_CodeCoverage_Util::getLinesToBeIgnored($filename); } else { // FIXME retrieve ignored lines for PHPUnit Version < 3.5.0 $ignoreLines = array(); } $lines = array(); $filename = strtolower($filename); if ($props->getProperty($filename) != null) { foreach ($data as $_line => $_data) { if (is_array($_data)) { $count = count($_data); } else { if (isset($ignoreLines[$_line])) { // line is marked as ignored $count = 1; } else { if ($_data == -1) { // not executed $count = -1; } else { if ($_data == -2) { // dead code $count = -2; } } } } $lines[$_line] = $count; } ksort($lines); $file = unserialize($props->getProperty($filename)); $left = $file['coverage']; $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $lines); $file['coverage'] = $coverageMerged; $props->setProperty($filename, serialize($file)); } } $props->store($database); }
/** * Run a test */ public function run(PHPUnit_Framework_TestSuite $suite) { $res = new PHPUnit_Framework_TestResult(); if ($this->codecoverage) { $res->collectCodeCoverageInformation(TRUE); } $res->addListener($this); foreach ($this->formatters as $formatter) { $res->addListener($formatter); } /* Set PHPUnit error handler */ if ($this->useCustomErrorHandler) { $oldErrorHandler = set_error_handler(array('PHPUnitTestRunner', 'handleError'), E_ALL | E_STRICT); } $suite->run($res, false, $this->groups, $this->excludeGroups); foreach ($this->formatters as $formatter) { $formatter->processResult($res); } /* Restore Phing error handler */ if ($this->useCustomErrorHandler) { restore_error_handler(); } if ($this->codecoverage) { $coverage = $res->getCodeCoverage(); $summary = $coverage->getSummary(); CoverageMerger::merge($this->project, $summary); } if ($res->errorCount() != 0) { $this->retCode = self::ERRORS; } else { if ($res->failureCount() != 0) { $this->retCode = self::FAILURES; } else { if ($res->notImplementedCount() != 0) { $this->retCode = self::INCOMPLETES; } else { if ($res->skippedCount() != 0) { $this->retCode = self::SKIPPED; } } } } }
function main() { $files = $this->getFilenames(); $this->log("Setting up coverage database for " . count($files) . " files"); $props = new Properties(); foreach ($files as $file) { $fullname = $file['fullname']; $filename = $file['key']; $props->setProperty($filename, serialize(array('fullname' => $fullname, 'coverage' => array()))); } $dbfile = new PhingFile($this->database); $props->store($dbfile); $this->project->setProperty('coverage.database', $dbfile->getAbsolutePath()); foreach ($files as $file) { $fullname = $file['fullname']; xdebug_start_code_coverage(XDEBUG_CC_UNUSED); Phing::__import($fullname, $this->classpath); $coverage = xdebug_get_code_coverage(); xdebug_stop_code_coverage(); CoverageMerger::merge($this->project, array($coverage)); } }
static function merge($project, $codeCoverageInformation) { $database = new PhingFile($project->getProperty('coverage.database')); $props = new Properties(); $props->load($database); $coverageTotal = $codeCoverageInformation; foreach ($coverageTotal as $coverage) { foreach ($coverage as $filename => $coverageFile) { $filename = strtolower($filename); if ($props->getProperty($filename) != null) { $file = unserialize($props->getProperty($filename)); $left = $file['coverage']; $right = $coverageFile; if (!is_array($right)) { $right = array_shift(PHPUnit_Util_CodeCoverage::bitStringToCodeCoverage(array($right), 1)); } $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $right); foreach ($coverageMerged as $key => $value) { if ($value == -2) { unset($coverageMerged[$key]); } } $file['coverage'] = $coverageMerged; $props->setProperty($filename, serialize($file)); } } } $props->store($database); }
public static function merge($project, $codeCoverageInformation) { $props = self::_getDatabase($project); $coverageTotal = $codeCoverageInformation; foreach ($coverageTotal as $filename => $data) { $lines = array(); $filename = strtolower($filename); if ($props->getProperty($filename) != null) { foreach ($data as $_line => $_data) { if ($_data === null) { continue; } if (is_array($_data)) { $count = count($_data); if ($count == 0) { $count = -1; } } else { if ($_data == -1) { // not executed $count = -1; } else { if ($_data == -2) { // dead code $count = -2; } } } $lines[$_line] = $count; } ksort($lines); $file = unserialize($props->getProperty($filename)); $left = $file['coverage']; $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $lines); $file['coverage'] = $coverageMerged; $props->setProperty($filename, serialize($file)); } } $props->store(); }
static function merge($project, $codeCoverageInformation) { $coverageDatabase = $project->getProperty('coverage.database'); if (!$coverageDatabase) { throw new BuildException("Property coverage.database is not set - please include coverage-setup in your build file"); } $database = new PhingFile($coverageDatabase); $props = new Properties(); $props->load($database); $coverageTotal = $codeCoverageInformation; foreach ($coverageTotal as $filename => $data) { $lines = array(); $filename = strtolower($filename); if ($props->getProperty($filename) != null) { foreach ($data as $_line => $_data) { if (is_array($_data)) { $count = count($_data); } else { if ($_data == -1) { // not executed $count = -1; } else { if ($_data == -2) { // dead code $count = -2; } } } $lines[$_line] = $count; } ksort($lines); $file = unserialize($props->getProperty($filename)); $left = $file['coverage']; $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $lines); $file['coverage'] = $coverageMerged; $props->setProperty($filename, serialize($file)); } } $props->store($database); }
/** * Run a test */ function run($test) { $res = new PHPUnit_Framework_TestResult(); if ($this->codecoverage) { $res->collectCodeCoverageInformation(TRUE); } $res->addListener($this); foreach ($this->formatters as $formatter) { $res->addListener($formatter); } /* Set PHPUnit error handler */ $oldErrorHandler = set_error_handler(array('PHPUnitTestRunner', 'handleError'), E_ALL | E_STRICT); $test->run($res, false, $this->groups, $this->excludeGroups); /* Restore Phing error handler */ restore_error_handler(); if ($this->codecoverage) { $coverageInformation = $res->getCodeCoverageInformation(); foreach ($coverageInformation as $coverage_info) { CoverageMerger::merge($this->project, array($coverage_info['files'])); } } if ($res->errorCount() != 0) { $this->retCode = self::ERRORS; } else { if ($res->failureCount() != 0) { $this->retCode = self::FAILURES; } else { if ($res->notImplementedCount() != 0) { $this->retCode = self::INCOMPLETES; } else { if ($res->skippedCount() != 0) { $this->retCode = self::SKIPPED; } } } } }