if ($options['--log']) { echo "Log: {$options['--log']}\n"; $runner->outputHandlers[] = new Tester\Runner\Output\Logger($runner, $options['--log']); } if ($options['--setup']) { call_user_func(function () use($runner) { require func_get_arg(0); }, $options['--setup']); } if ($options['--tap']) { ob_end_clean(); } else { ob_end_flush(); } if (!$options['--watch']) { $result = $runner->run(); if (preg_match('#\\.html?\\z#', $options['--coverage'])) { if (!$options['--tap']) { echo "Generating code coverage report\n"; } $generator = new Tester\CodeCoverage\ReportGenerator($coverageFile, $options['--coverage-src']); $generator->render($coverageFile); } die($result ? 0 : 1); } $prev = array(); $counter = 0; while (TRUE) { $state = array(); foreach ($options['--watch'] as $directory) { foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file) {
$phpArgs = $options['-c'] ? '-n -c ' . escapeshellarg($options['-c']) : '-n'; foreach ($options['-d'] as $item) { $phpArgs .= ' -d ' . escapeshellarg($item); } $runner = new Tester\Runner\Runner(new Tester\Runner\PhpExecutable($options['-p'], $phpArgs)); $runner->paths = $options['paths']; $runner->jobCount = max(1, (int) $options['-j']); $runner->outputHandlers[] = $options['--tap'] ? new Tester\Runner\Output\TapPrinter($runner) : new Tester\Runner\Output\ConsolePrinter($runner, $options['-s']); if ($options['-log']) { echo "Log: {$options['-log']}\n"; $runner->outputHandlers[] = new Tester\Runner\Output\Logger($runner, $options['-log']); } @unlink(__DIR__ . '/coverage.dat'); // @ - file may not exist if (!$options['--watch']) { die($runner->run() ? 0 : 1); } $prev = array(); $counter = 0; while (TRUE) { $state = array(); foreach ($options['--watch'] as $directory) { foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file) { if (substr($file->getExtension(), 0, 3) === 'php') { $state[(string) $file] = md5_file((string) $file); } } } if ($state !== $prev) { $prev = $state; $runner->run();