/** * Filters sourcecode files from PHP_CodeCoverage, PHP_TokenStream, * Text_Template, and File_Iterator. * * @param array $data */ protected function applySelfFilter(&$data) { foreach (array_keys($data) as $filename) { if (!$this->filter->isFile($filename)) { unset($data[$filename]); continue; } if (!$this->isCodeCoverageTestSuite && strpos($filename, dirname(__FILE__)) === 0) { unset($data[$filename]); continue; } if (!$this->isFileIteratorTestSuite && (substr($filename, -17) == 'File/Iterator.php' || substr($filename, -25) == 'File/Iterator/Factory.php')) { unset($data[$filename]); continue; } if (!$this->isTimerTestSuite && substr($filename, -13) == 'PHP/Timer.php') { unset($data[$filename]); continue; } if (!$this->isTokenStreamTestSuite && (substr($filename, -13) == 'PHP/Token.php' || substr($filename, -20) == 'PHP/Token/Stream.php' || substr($filename, -35) == 'PHP/Token/Stream/CachingFactory.php')) { unset($data[$filename]); continue; } if (substr($filename, -17) == 'Text/Template.php') { unset($data[$filename]); } } }
/** * Filters sourcecode files from PHP_CodeCoverage, PHP_TokenStream, * Text_Template, and File_Iterator. * * @param array $data */ protected function applySelfFilter(&$data) { foreach (array_keys($data) as $filename) { if (!$this->filter->isFile($filename)) { unset($data[$filename]); continue; } if (!defined('PHP_CODECOVERAGE_TESTSUITE') && strpos($filename, dirname(__FILE__)) === 0) { unset($data[$filename]); continue; } if (!defined('FILE_ITERATOR_TESTSUITE') && (substr($filename, -17) == 'File/Iterator.php' || substr($filename, -25) == 'File/Iterator/Factory.php')) { unset($data[$filename]); continue; } if (!defined('PHP_TIMER_TESTSUITE') && substr($filename, -13) == 'PHP/Timer.php') { unset($data[$filename]); continue; } if (!defined('PHP_TOKENSTREAM_TESTSUITE') && (substr($filename, -13) == 'PHP/Token.php' || substr($filename, -20) == 'PHP/Token/Stream.php' || substr($filename, -35) == 'PHP/Token/Stream/CachingFactory.php')) { unset($data[$filename]); continue; } if (substr($filename, -17) == 'Text/Template.php') { unset($data[$filename]); } } }
/** * @param array $data * @since Method available since Release 1.1.0 */ private function initializeFilesThatAreSeenTheFirstTime(array $data) { foreach ($data as $file => $lines) { if ($this->filter->isFile($file) && !isset($this->data[$file])) { $this->data[$file] = array(); foreach ($lines as $k => $v) { $this->data[$file][$k] = $v == -2 ? null : array(); } } } }
require_once 'File/Iterator/Autoload.php'; require_once 'PHP/CodeCoverage/Autoload.php'; // Set this to the directory that contains the code coverage files. // It defaults to getcwd(). If you have configured a different directory // in prepend.php, you need to configure the same directory here. $GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'] = getcwd(); if (isset($_GET['PHPUNIT_SELENIUM_TEST_ID'])) { $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'], $_GET['PHPUNIT_SELENIUM_TEST_ID']); $coverage = array(); foreach ($files as $file) { $data = unserialize(file_get_contents($file)); unlink($file); unset($file); $filter = new PHP_CodeCoverage_Filter(); foreach ($data as $file => $lines) { if ($filter->isFile($file)) { if (!isset($coverage[$file])) { $coverage[$file] = array('md5' => md5_file($file), 'coverage' => $lines); } else { foreach ($lines as $line => $flag) { if (!isset($coverage[$file]['coverage'][$line]) || $flag > $coverage[$file]['coverage'][$line]) { $coverage[$file]['coverage'][$line] = $flag; } } } } } } print serialize($coverage); }
*/ require_once 'File/Iterator/Factory.php'; require_once 'PHP/CodeCoverage/Filter.php'; // Set this to the directory that contains the code coverage files. // It defaults to getcwd(). If you have configured a different directory // in prepend.php, you need to configure the same directory here. $GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'] = getcwd(); if (isset($_GET['PHPUNIT_SELENIUM_TEST_ID'])) { $files = File_Iterator_Factory::getFileIterator($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'], $_GET['PHPUNIT_SELENIUM_TEST_ID']); $coverage = array(); foreach ($files as $file) { $filename = $file->getPathName(); $data = unserialize(file_get_contents($filename)); @unlink($filename); unset($filename); foreach ($data as $filename => $lines) { if (PHP_CodeCoverage_Filter::isFile($filename)) { if (!isset($coverage[$filename])) { $coverage[$filename] = array('md5' => md5_file($filename), 'coverage' => $lines); } else { foreach ($lines as $line => $flag) { if (!isset($coverage[$filename]['coverage'][$line]) || $flag > $coverage[$filename]['coverage'][$line]) { $coverage[$filename]['coverage'][$line] = $flag; } } } } } } print serialize($coverage); }
/** * Aggregates previously collected coverage information. * * @return string */ public function aggregateCoverageInformation() { if (!isset($_GET[self::TEST_ID_VARIABLE])) { return ''; } $coverage = array(); $filter = new \PHP_CodeCoverage_Filter(); foreach ($this->getDataDirectoryFiles() as $data_directory_file) { $raw_coverage_data = unserialize(file_get_contents($data_directory_file)); foreach ($raw_coverage_data as $file => $lines) { if (!$filter->isFile($file)) { continue; } if (!isset($coverage[$file])) { $coverage[$file] = array('md5' => md5_file($file), 'coverage' => $lines); } else { foreach ($lines as $line => $flag) { if (!isset($coverage[$file]['coverage'][$line]) || $flag > $coverage[$file]['coverage'][$line]) { $coverage[$file]['coverage'][$line] = $flag; } } } } } return serialize($coverage); }
$factory = new File_Iterator_Factory(); $files = $factory->getFileIterator($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'], $_GET['PHPUNIT_SELENIUM_TEST_ID']); $filter = new PHP_CodeCoverage_Filter(); $used = array(); $coverage = array(); foreach ($files as $file) { $filename = $file->getPathName(); if (isset($used[$filename])) { //strange bug continue; } $data = unserialize(file_get_contents($filename)); @unlink($filename); $used[$filename] = true; unset($filename); foreach ($data as $filename => $lines) { if ($filter->isFile($filename)) { if (!isset($coverage[$filename])) { $coverage[$filename] = array('md5' => md5_file($filename), 'coverage' => $lines); } else { foreach ($lines as $line => $flag) { if (!isset($coverage[$filename]['coverage'][$line]) || $flag > $coverage[$filename]['coverage'][$line]) { $coverage[$filename]['coverage'][$line] = $flag; } } } } } } print serialize($coverage); }