public function __construct() { parent::__construct(); $paths = []; // Autodiscover extension unit tests $registry = ExtensionRegistry::getInstance(); foreach ($registry->getAllThings() as $info) { $paths[] = dirname($info['path']) . '/tests/phpunit'; } // Extensions can return a list of files or directories Hooks::run('UnitTestsList', [&$paths]); foreach (array_unique($paths) as $path) { if (is_dir($path)) { // If the path is a directory, search for test cases. // @since 1.24 $suffixes = ['Test.php']; $fileIterator = new File_Iterator_Facade(); $matchingFiles = $fileIterator->getFilesAsArray($path, $suffixes); $this->addTestFiles($matchingFiles); } elseif (file_exists($path)) { // Add a single test case or suite class $this->addTestFile($path); } } if (!$paths) { $this->addTest(new DummyExtensionsTest('testNothing')); } }
/** * Removes a directory from the whitelist (recursively). * * @param string $directory * @param string $suffix * @param string $prefix */ public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '') { $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($directory, $suffix, $prefix); foreach ($files as $file) { $this->removeFileFromWhitelist($file); } }
function __construct() { parent::__construct('DonationInterface test suite'); $suffixes = array('Test.php'); $fileIterator = new File_Iterator_Facade(); $files = $fileIterator->getFilesAsArray(__DIR__, $suffixes); $this->addTestFiles($files); }
/** * @covers PHP_CodeCoverage_Filter::addFilesToWhitelist * @covers PHP_CodeCoverage_Filter::getWhitelist */ public function testAddingFilesToTheWhitelistWorks() { $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray(TEST_FILES_PATH, $suffixes = '.php'); $this->filter->addFilesToWhitelist($files); $whitelist = $this->filter->getWhitelist(); sort($whitelist); $this->assertEquals($this->files, $whitelist); }
/** * @param \DOMNode $testSuiteNode * @param array $aggregatedFiles * @param array $excludes */ private function addTestsFromDirectoryNodes(\DOMNode $testSuiteNode, array &$aggregatedFiles, array $excludes) { foreach ($testSuiteNode->getElementsByTagName('directory') as $directoryNode) { $directory = (string) $directoryNode->nodeValue; $files = $this->fileIteratorFacade->getFilesAsArray($this->relativePath . $directory, $this->getDOMNodeAttribute($directoryNode, 'suffix', 'Test.php'), $this->getDOMNodeAttribute($directoryNode, 'prefix', ''), $excludes); foreach ($files as $fileName) { $this->addFileToAggregateArray($aggregatedFiles, $fileName); } } }
/** * Returns the Test corresponding to the given suite. * This is a template method, subclasses override * the runFailed() and clearStatus() methods. * * @param string $suiteClassName * @param string $suiteClassFile * @param mixed $suffixes * @return PHPUnit_Framework_Test */ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') { if (is_dir($suiteClassName) && !is_file($suiteClassName . '.php') && empty($suiteClassFile)) { $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($suiteClassName, $suffixes); $suite = new PHPUnit_Framework_TestSuite($suiteClassName); $suite->addTestFiles($files); return $suite; } $testClass = $this->loadSuiteClass($suiteClassName, $suiteClassFile); }
/** * Run the task. * * @param array &$options Additional options. * * @return integer Number of errors. */ public function run(&$options) { require 'PHPDCD/Autoload.php'; $facade = new File_Iterator_Facade(); $result = $facade->getFilesAsArray(array(realpath($this->_config->getPath())), array('php'), array(), array(), true); $files = $result['files']; $commonPath = $result['commonPath']; $detector = new PHPDCD_Detector(new \ezcConsoleOutput()); $result = $detector->detectDeadCode($files, true); $printer = new PHPDCD_TextUI_ResultPrinter(); $printer->printResult($result, $commonPath); }
/** * Constructs a new TestSuite for .phpt test cases. * * @param string $directory * @throws PHPUnit_Framework_Exception */ public function __construct(string $directory) { if (!is_dir($directory)) { throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'directory name'); } $this->setName($directory); $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($directory, '.phpt'); foreach ($files as $file) { $this->addTestFile($file); } }
/** * Checks the extension with php copy and paste detector */ protected function _checkWithPhpCopyPasteDetector() { $facade = new \File_Iterator_Facade(); $files = $facade->getFilesAsArray($this->_extensionPath); $strategy = new \PHPCPD_Detector_Strategy_Default(); $detector = new \PHPCPD_Detector($strategy, null); try { $clones = $detector->copyPasteDetection($files, self::PHP_CPD_MIN_LINES, self::PHP_CPD_MIN_TOKENS); } catch (\Exception $e) { return; } $this->_addIssue(array('type' => 'duplicated_code', 'files' => $clones->getFilesWithClones(), 'comment' => round((double) $clones->getPercentage(), 2), 'occurrences' => $clones->count())); }
/** * Constructs a new TestSuite for .zept test cases. * * @param string $directory * @throws PHPUnit_Framework_Exception */ public function __construct($directory, $silent) { if (is_string($directory) && is_dir($directory)) { $this->setName($directory); $facade = new \File_Iterator_Facade(); $files = $facade->getFilesAsArray($directory, '.zept'); foreach ($files as $file) { $this->addTest(new \ZephirTestCase\ZeptTestCase($file, $silent)); } } else { throw \PHPUnit_Util_InvalidArgumentHelper::factory(1, 'directory name'); } }
public static function suite() { if (empty($_ENV)) { if (isset($_SERVER['PATH'])) { $_ENV['PATH'] = $_SERVER['PATH']; } else { $_ENV['PATH'] = getenv('PATH'); } } $directory = __DIR__ . '/../../ext/tests/'; $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($directory, '.phpt'); $suite = new PHPUnit_Framework_TestSuite(); foreach ($files as $file) { $c = file_get_contents($file); if (!preg_match('/^--(?:PUT|(?:GZIP|DEFLATE)_POST|CGI)--$/m', $c)) { $suite->addTestFile($file); } } return $suite; }
/** * Returns the Test corresponding to the given suite. * This is a template method, subclasses override * the runFailed() and clearStatus() methods. * * @param string $suiteClassName * @param string $suiteClassFile * @param mixed $suffixes * * @return PHPUnit_Framework_Test */ public function getTest($suiteClassName, $suiteClassFile = '', $suffixes = '') { if (is_dir($suiteClassName) && !is_file($suiteClassName . '.php') && empty($suiteClassFile)) { $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($suiteClassName, $suffixes); $suite = new PHPUnit_Framework_TestSuite($suiteClassName); $suite->addTestFiles($files); return $suite; } try { $testClass = $this->loadSuiteClass($suiteClassName, $suiteClassFile); } catch (PHPUnit_Framework_Exception $e) { $this->runFailed($e->getMessage()); return; } try { $suiteMethod = $testClass->getMethod(self::SUITE_METHODNAME); if (!$suiteMethod->isStatic()) { $this->runFailed('suite() method must be static.'); return; } try { $test = $suiteMethod->invoke(null, $testClass->getName()); } catch (ReflectionException $e) { $this->runFailed(sprintf("Failed to invoke suite() method.\n%s", $e->getMessage())); return; } } catch (ReflectionException $e) { try { $test = new PHPUnit_Framework_TestSuite($testClass); } catch (PHPUnit_Framework_Exception $e) { $test = new PHPUnit_Framework_TestSuite(); $test->setName($suiteClassName); } } $this->clearStatus(); return $test; }
public function __construct() { parent::__construct(); $paths = array(); // Extensions can return a list of files or directories Hooks::run('UnitTestsList', array(&$paths)); foreach ($paths as $path) { if (is_dir($path)) { // If the path is a directory, search for test cases. // @since 1.24 $suffixes = array('Test.php'); $fileIterator = new File_Iterator_Facade(); $matchingFiles = $fileIterator->getFilesAsArray($path, $suffixes); $this->addTestFiles($matchingFiles); } else { // Add a single test case or suite class $this->addTestFile($path); } } if (!count($paths)) { $this->addTest(new DummyExtensionsTest('testNothing')); } }
/** * Get all test helper class names * @return array */ public function getTestHelperClassNames() { if (!empty($this->_testHelperClassNames)) { return $this->_testHelperClassNames; } //Get initial path to test helpers $frameworkConfig = $this->_configHelper->getConfigFramework(); $initialPath = SELENIUM_TESTS_BASEDIR . DIRECTORY_SEPARATOR . $frameworkConfig['testsuite_base_path']; //Get test helpers sequence $fallbackOrderHelper = $this->_configHelper->getHelpersFallbackOrder(); $facade = new File_Iterator_Facade(); foreach ($fallbackOrderHelper as $codePoolName) { $projectPath = $initialPath . DIRECTORY_SEPARATOR . $codePoolName; if (!is_dir($projectPath)) { continue; } $files = $facade->getFilesAsArray($projectPath, 'Helper.php'); foreach ($files as $file) { $className = str_replace($initialPath . DIRECTORY_SEPARATOR, '', $file); $className = str_replace(DIRECTORY_SEPARATOR, '_', str_replace('.php', '', $className)); $array = explode('_', str_replace('_Helper', '', $className)); $helperName = end($array); $this->_testHelperClassNames[$helperName] = $className; } } return $this->_testHelperClassNames; }
/** * Runs a suite of unit tests * * @param string $directory Directory with tests. * @param string $suffix Test file suffix. * @throws \Exception When invalid test found. * @return boolean */ public function run($directory, $suffix) { $this->resultPrinter->suiteHeader($this, $directory . '/*' . $suffix); $passed = true; $facade = new \File_Iterator_Facade(); $old_handler = set_error_handler(array($this, 'handlePHPErrors')); foreach ($facade->getFilesAsArray($directory, $suffix) as $path) { $test = (require $path); if (!$test instanceof xTest) { throw new \Exception("'{$path}' is not a valid unit test"); } $test->setResultPrinter($this->resultPrinter); $passed = $passed && $test->run($this); } if ($old_handler) { set_error_handler($old_handler); } else { restore_error_handler(); } $this->resultPrinter->createCodeCoverageReport($this->coverage); $this->resultPrinter->suiteFooter($this); return $passed; }
/** * Returns the Phantom test files from a folder as an array. * * @param string $directory * @param string $suffix * @return array */ private static function getTestFilesFromFolder($directory, $suffix) { $facade = new File_Iterator_Facade(); return $facade->getFilesAsArray($directory, $suffix); }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $output = new ezcConsoleOutput(); $input->registerOption(new ezcConsoleOption('', 'exclude', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'log-pmd', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'min-lines', ezcConsoleInput::TYPE_INT, 5)); $input->registerOption(new ezcConsoleOption('', 'min-tokens', ezcConsoleInput::TYPE_INT, 70)); $input->registerOption(new ezcConsoleOption('', 'save-memory', ezcConsoleInput::TYPE_NONE, NULL, FALSE)); $input->registerOption(new ezcConsoleOption('', 'suffixes', ezcConsoleInput::TYPE_STRING, 'php', FALSE)); $input->registerOption(new ezcConsoleOption('', 'quiet', ezcConsoleInput::TYPE_NONE, NULL, FALSE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('', 'verbose', ezcConsoleInput::TYPE_NONE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . PHP_EOL; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); $exclude = $input->getOption('exclude')->value; if (is_array($exclude) && count($exclude) == 1) { array_map('trim', explode(',', array_pop($exclude))); } $logPmd = $input->getOption('log-pmd')->value; $minLines = $input->getOption('min-lines')->value; $minTokens = $input->getOption('min-tokens')->value; $saveMemory = $input->getOption('save-memory')->value; $suffixes = array_map('trim', explode(',', $input->getOption('suffixes')->value)); $quiet = $input->getOption('quiet')->value; if ($input->getOption('verbose')->value !== FALSE) { $verbose = $output; } else { $verbose = NULL; } if (!empty($arguments)) { $facade = new File_Iterator_Facade(); $result = $facade->getFilesAsArray($arguments, $suffixes, array(), $exclude, TRUE); $files = $result['files']; $commonPath = $result['commonPath']; unset($result); } else { self::showHelp(); exit(1); } if (empty($files)) { self::showError('No files found to scan.' . PHP_EOL); } self::printVersionString(); if (!$saveMemory) { $strategy = new PHPCPD_Detector_Strategy_Default(); } else { $strategy = new PHPCPD_Detector_Strategy_SaveMemory(); } $detector = new PHPCPD_Detector($strategy, $verbose); $clones = $detector->copyPasteDetection($files, $minLines, $minTokens); $printer = new PHPCPD_TextUI_ResultPrinter(); $printer->printResult($clones, $commonPath, !$quiet); unset($printer); if ($logPmd) { $pmd = new PHPCPD_Log_XML_PMD($logPmd); $pmd->processClones($clones); unset($pmd); } if (count($clones) > 0) { exit(1); } }
<?php include __DIR__ . '/../vendor/autoload.php'; use Liuggio\Spawn\Spawn; $testRunner = new Spawn(); $iterator = new \File_Iterator_Facade(); $files = $iterator->getFilesAsArray([__DIR__], ['Test.php']); $exit = $testRunner->processes($files, __DIR__ . '/../bin/phpunit {}')->onCompleted(function (\Liuggio\Spawn\Process\Process $process) { echo $process->getCommandLine(); if ($process->getExitCode() == 0) { echo ' yes' . PHP_EOL; return; } echo ' ops' . PHP_EOL; echo $process->getErrorOutput() . PHP_EOL; echo $process->getOutput() . PHP_EOL; echo '=====' . PHP_EOL; })->onLoopCompleted(function ($exitCode, \Symfony\Component\Stopwatch\StopwatchEvent $event) { echo PHP_EOL . PHP_EOL . ($exitCode == 0 ? 'successful' : 'failed') . PHP_EOL; echo 'memory used: ' . $event->getMemory() . PHP_EOL; echo 'Duration: ' . $event->getDuration() . PHP_EOL; })->start(); exit($exit); // if you want more fun please have a look to the fastest project // https://github.com/liuggio/fastest
/** * @param DOMElement $testSuiteNode * @return PHPUnit_Framework_TestSuite * @since Method available since Release 3.4.0 */ protected function getTestSuite(DOMElement $testSuiteNode, $testSuiteFilter = null) { if ($testSuiteNode->hasAttribute('name')) { $suite = new PHPUnit_Framework_TestSuite((string) $testSuiteNode->getAttribute('name')); } else { $suite = new PHPUnit_Framework_TestSuite(); } $exclude = array(); foreach ($testSuiteNode->getElementsByTagName('exclude') as $excludeNode) { $exclude[] = $this->toAbsolutePath((string) $excludeNode->nodeValue); } $fileIteratorFacade = new File_Iterator_Facade(); foreach ($testSuiteNode->getElementsByTagName('directory') as $directoryNode) { if ($testSuiteFilter && $directoryNode->parentNode->getAttribute('name') != $testSuiteFilter) { continue; } $directory = (string) $directoryNode->nodeValue; if (empty($directory)) { continue; } if ($directoryNode->hasAttribute('phpVersion')) { $phpVersion = (string) $directoryNode->getAttribute('phpVersion'); } else { $phpVersion = PHP_VERSION; } if ($directoryNode->hasAttribute('phpVersionOperator')) { $phpVersionOperator = (string) $directoryNode->getAttribute('phpVersionOperator'); } else { $phpVersionOperator = '>='; } if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) { continue; } if ($directoryNode->hasAttribute('prefix')) { $prefix = (string) $directoryNode->getAttribute('prefix'); } else { $prefix = ''; } if ($directoryNode->hasAttribute('suffix')) { $suffix = (string) $directoryNode->getAttribute('suffix'); } else { $suffix = 'Test.php'; } $files = $fileIteratorFacade->getFilesAsArray($this->toAbsolutePath($directory), $suffix, $prefix, $exclude); $suite->addTestFiles($files); } foreach ($testSuiteNode->getElementsByTagName('file') as $fileNode) { if ($testSuiteFilter && $fileNode->parentNode->getAttribute('name') != $testSuiteFilter) { continue; } $file = (string) $fileNode->nodeValue; if (empty($file)) { continue; } // Get the absolute path to the file $file = $fileIteratorFacade->getFilesAsArray($this->toAbsolutePath($file)); if (!isset($file[0])) { continue; } $file = $file[0]; if ($fileNode->hasAttribute('phpVersion')) { $phpVersion = (string) $fileNode->getAttribute('phpVersion'); } else { $phpVersion = PHP_VERSION; } if ($fileNode->hasAttribute('phpVersionOperator')) { $phpVersionOperator = (string) $fileNode->getAttribute('phpVersionOperator'); } else { $phpVersionOperator = '>='; } if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) { continue; } $suite->addTestFile($file); } return $suite; }
protected function getModuleTestSuite($module, $testFile = '') { $moduleList = $this->epInfo->getModulesList(); $topsuite = new PHPUnit_Framework_TestSuite(); if (isset($moduleList[$module])) { $type = ($this->testType ? '.' . $this->testType : '') . '.pu.php'; $suite = new JelixTestSuite($module); if ($this->version36) { if ($testFile) { $suite->addTestFile($moduleList[$module] . 'tests/' . $testFile); } else { $fileIteratorFacade = new File_Iterator_Facade(); $files = $fileIteratorFacade->getFilesAsArray($moduleList[$module], $type); $suite->addTestFiles($files); } } else { $testCollector = new PHPUnit_Runner_IncludePathTestCollector(array($moduleList[$module]), $type); $suite->addTestFiles($testCollector->collectTests()); } if (count($suite->tests()) > 0) { $topsuite->addTestSuite($suite); } } return $topsuite; }
/** * @param DOMElement $testSuiteNode * @return PHPUnit_Framework_TestSuite * @since Method available since Release 3.4.0 */ protected function getTestSuite(DOMElement $testSuiteNode) { if ($testSuiteNode->hasAttribute('name')) { $suite = new PHPUnit_Framework_TestSuite((string) $testSuiteNode->getAttribute('name')); } else { $suite = new PHPUnit_Framework_TestSuite(); } foreach ($testSuiteNode->getElementsByTagName('directory') as $directoryNode) { $directory = (string) $directoryNode->nodeValue; if (empty($directory)) { continue; } if ($directoryNode->hasAttribute('phpVersion')) { $phpVersion = (string) $directoryNode->getAttribute('phpVersion'); } else { $phpVersion = PHP_VERSION; } if ($directoryNode->hasAttribute('phpVersionOperator')) { $phpVersionOperator = (string) $directoryNode->getAttribute('phpVersionOperator'); } else { $phpVersionOperator = '>='; } if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) { continue; } if ($directoryNode->hasAttribute('prefix')) { $prefix = (string) $directoryNode->getAttribute('prefix'); } else { $prefix = ''; } if ($directoryNode->hasAttribute('suffix')) { $suffix = (string) $directoryNode->getAttribute('suffix'); } else { $suffix = 'Test.php'; } $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($this->toAbsolutePath($directory), $suffix, $prefix, array()); $suite->addTestFiles($files); } foreach ($testSuiteNode->getElementsByTagName('file') as $fileNode) { $file = (string) $fileNode->nodeValue; if (empty($file)) { continue; } if ($fileNode->hasAttribute('phpVersion')) { $phpVersion = (string) $fileNode->getAttribute('phpVersion'); } else { $phpVersion = PHP_VERSION; } if ($fileNode->hasAttribute('phpVersionOperator')) { $phpVersionOperator = (string) $fileNode->getAttribute('phpVersionOperator'); } else { $phpVersionOperator = '>='; } if (!version_compare(PHP_VERSION, $phpVersion, $phpVersionOperator)) { continue; } $suite->addTestFile($file); } return $suite; }
* @author Sebastian Bergmann <*****@*****.**> * @copyright 2010-2013 Sebastian Bergmann <*****@*****.**> * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License * @link http://www.phpunit.de/ * @since File available since Release 1.0.0 */ 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. if (!isset($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'])) { $PHPUNIT_COVERAGE_DATA_DIRECTORY = realpath($_SERVER['DOCUMENT_ROOT']) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'logs'; } if (isset($_GET['PHPUNIT_SELENIUM_TEST_ID'])) { $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'], '_coverage'); $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;
/** * @param string $className * @param integer $parent * @since Method available since Release 3.7.2 */ protected static function addDirectoryContainingClassToPHPUnitFilesList($className, $parent = 1) { if (!class_exists($className)) { return; } $reflector = new ReflectionClass($className); $directory = $reflector->getFileName(); for ($i = 0; $i < $parent; $i++) { $directory = dirname($directory); } $facade = new File_Iterator_Facade(); foreach ($facade->getFilesAsArray($directory, '.php') as $file) { self::$phpunitFiles[$file] = TRUE; } }
/** * @param string $directory * @param string $suffix * @return array */ protected static function getSeleneseFiles($directory, $suffix) { $facade = new File_Iterator_Facade(); return $facade->getFilesAsArray($directory, $suffix); }
/** * Main method. */ public function main() { $input = new \ezcConsoleInput(); $input->registerOption(new \ezcConsoleOption('', 'clover', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'configuration', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'html', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'php', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'text', \ezcConsoleInput::TYPE_STRING)); $input->registerOption(new \ezcConsoleOption('', 'blacklist', \ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new \ezcConsoleOption('', 'whitelist', \ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new \ezcConsoleOption('', 'merge', \ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new \ezcConsoleOption('', 'add-uncovered', \ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new \ezcConsoleOption('', 'process-uncovered', \ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new \ezcConsoleOption('h', 'help', \ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new \ezcConsoleOption('v', 'version', \ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { $this->showHelp(); exit(0); } else { if ($input->getOption('version')->value) { $this->printVersionString(); exit(0); } } $arguments = $input->getArguments(); $clover = $input->getOption('clover')->value; $configuration = $input->getOption('configuration')->value; $html = $input->getOption('html')->value; $php = $input->getOption('php')->value; $text = $input->getOption('text')->value; $blacklist = $input->getOption('blacklist')->value; $whitelist = $input->getOption('whitelist')->value; $addUncovered = $input->getOption('add-uncovered')->value; $processUncovered = $input->getOption('process-uncovered')->value; $merge = $input->getOption('merge')->value; $coverage = new \PHP_CodeCoverage(); $filter = $coverage->filter(); if ($configuration) { $this->handleConfiguration($configuration, $coverage); } if (count($arguments) == 1) { $this->printVersionString(); if (empty($whitelist)) { $c = new \ReflectionClass('ezcBase'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); $c = new \ReflectionClass('ezcConsoleInput'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); foreach ($blacklist as $item) { if (is_dir($item)) { $filter->addDirectoryToBlacklist($item); } else { if (is_file($item)) { $filter->addFileToBlacklist($item); } } } } else { $coverage->setAddUncoveredFilesFromWhitelist($addUncovered); $coverage->setProcessUncoveredFilesFromWhitelist($processUncovered); foreach ($whitelist as $item) { if (is_dir($item)) { $filter->addDirectoryToWhitelist($item); } else { if (is_file($item)) { $filter->addFileToWhitelist($item); } } } } if (!$merge) { $coverage->start('phpcov'); require $arguments[0]; $coverage->stop(); } else { $facade = new \File_Iterator_Facade(); $files = $facade->getFilesAsArray($arguments[0], '.cov'); foreach ($files as $file) { $coverage->merge(unserialize(file_get_contents($file))); } } if ($clover) { print "\nGenerating code coverage report in Clover XML format ..."; $writer = new \PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, $clover); print " done\n"; } if ($html) { print "\nGenerating code coverage report in HTML format ..."; $writer = new \PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, $html); print " done\n"; } if ($php) { print "\nGenerating code coverage report in PHP format ..."; $writer = new \PHP_CodeCoverage_Report_PHP(); $writer->process($coverage, $php); print " done\n"; } if ($text) { $writer = new \PHP_CodeCoverage_Report_Text(); $writer->process($coverage, $text); } } else { $this->showHelp(); exit(1); } }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $input->registerOption(new ezcConsoleOption('', 'clover', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'html', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'blacklist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'whitelist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'merge', ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); $clover = $input->getOption('clover')->value; $html = $input->getOption('html')->value; $blacklist = $input->getOption('blacklist')->value; $whitelist = $input->getOption('whitelist')->value; $merge = $input->getOption('merge')->value; if (count($arguments) == 1) { self::printVersionString(); $coverage = new PHP_CodeCoverage(); $filter = $coverage->filter(); if (empty($whitelist)) { $c = new ReflectionClass('ezcBase'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); $c = new ReflectionClass('ezcConsoleInput'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); foreach ($blacklist as $item) { if (is_dir($item)) { $filter->addDirectoryToBlacklist($item); } else { if (is_file($item)) { $filter->addFileToBlacklist($item); } } } } else { foreach ($whitelist as $item) { if (is_dir($item)) { $filter->addDirectoryToWhitelist($item); } else { if (is_file($item)) { $filter->addFileToWhitelist($item); } } } } if (!$merge) { $coverage->start('phpcov'); require $arguments[0]; $coverage->stop(); } else { $facade = new File_Iterator_Facade(); $result = $facade->getFilesAsArray($arguments[0], '.cov'); foreach ($files as $file) { $coverage->merge(unserialize(file_get_contents($file))); } } if ($clover) { $writer = new PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, $clover); } if ($html) { $writer = new PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, $html); } } else { self::showHelp(); exit(1); } }
* * @package PHPUnit_Selenium * @author Sebastian Bergmann <*****@*****.**> * @copyright 2010-2012 Sebastian Bergmann <*****@*****.**> * @license http://www.opensource.org/licenses/bsd-license.php BSD License * @link http://www.phpunit.de/ * @since File available since Release 1.0.0 */ 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;
require_once '../selenium/CodeCoverage/Filter.php'; // $directory = realpath(__DIR__); // while ($directory != '/') { // $autoloadCandidate = $directory . '/vendor/autoload.php'; // if (file_exists($autoloadCandidate)) { // require_once $autoloadCandidate; // break; // } // $directory = realpath($directory . '/..'); // } // 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(); $sanitizedCookieName = str_replace(array('\\'), '_', $_GET['PHPUNIT_SELENIUM_TEST_ID']); $files = $facade->getFilesAsArray($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'], $sanitizedCookieName); $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]) {
/** * Adds a directory to the blacklist (recursively). * * @param string $directory * @param string $suffix * @param string $prefix */ public function addDirectoryToBlacklist($directory, $suffix = '.php', $prefix = '') { $facade = new File_Iterator_Facade(); $files = $facade->getFilesAsArray($directory, $suffix, $prefix); foreach ($files as $file) { $this->addFileToBlacklist($file); } }
/** * Returns contents of data directory for a current test. * * @return array */ protected function getDataDirectoryFiles() { $facade = new \File_Iterator_Facade(); return $facade->getFilesAsArray($this->dataDirectory, $_GET[self::TEST_ID_VARIABLE]); }