/
opt
/
alt
/
php54
/
usr
/
share
/
pear
/
PHPUnit
/
Extensions
/
SeleniumCommon
/
Upload Filee
HOME
<?php class PHPUnit_Extensions_SeleniumCommon_RemoteCoverage { public function __construct($coverageScriptUrl, $testId) { $this->coverageScriptUrl = $coverageScriptUrl; $this->testId = $testId; } public function get() { if (!empty($this->coverageScriptUrl)) { $url = sprintf( '%s?PHPUNIT_SELENIUM_TEST_ID=%s', $this->coverageScriptUrl, $this->testId ); $buffer = @file_get_contents($url); if ($buffer !== FALSE) { $coverageData = unserialize($buffer); if (is_array($coverageData)) { return $this->matchLocalAndRemotePaths($coverageData); } else { throw new Exception('Empty or invalid code coverage data received from url "' . $url . '"'); } } } return array(); } /** * @param array $coverage * @return array * @author Mattis Stordalen Flister <mattis@xait.no> */ protected function matchLocalAndRemotePaths(array $coverage) { $coverageWithLocalPaths = array(); foreach ($coverage as $originalRemotePath => $data) { $remotePath = $originalRemotePath; $separator = $this->findDirectorySeparator($remotePath); while (!($localpath = stream_resolve_include_path($remotePath)) && strpos($remotePath, $separator) !== FALSE) { $remotePath = substr($remotePath, strpos($remotePath, $separator) + 1); } if ($localpath && md5_file($localpath) == $data['md5']) { $coverageWithLocalPaths[$localpath] = $data['coverage']; } } return $coverageWithLocalPaths; } /** * @param string $path * @return string * @author Mattis Stordalen Flister <mattis@xait.no> */ protected function findDirectorySeparator($path) { if (strpos($path, '/') !== FALSE) { return '/'; } return '\\'; } }