/** * @param Container $container * @param Text $renderer * @param OutputInterface $output * * @return Runner */ public function build(Container $container, Text $renderer, InputInterface $input, OutputInterface $output) { /** * We can do parallel runs, but typically two test runs will compete for * any uninsulated resources (e.g. files/database) so hardcoded to 1 for now. * * TODO: Move PHPUnit specific stuff to adapter... */ $mutantGenerator = new FileGenerator($container->getTempDirectory()); $processBuilder = new ProcessBuilder($container); $testSuite = new Runner($mutantGenerator, $processBuilder, $container->getBaseDirectory(), 1); $testSuite->addObserver(new LoggingObserver($renderer, $output)); $testSuite->addObserver(new PerformanceObserver($renderer, $input)); $testSuite->addObserver($spinnerObserver = new SpinnerObserver($input, $output)); if (!defined('PHP_WINDOWS_VERSION_BUILD')) { $spinnerObserver->setStates(['◓', '◑', '◒', '◐']); } /** * Add logging observers */ if ($this->jsonLogFile) { $testSuite->addObserver(new JsonLoggingObserver($renderer, $this->jsonLogFile)); } if ($this->textLogFile) { $testSuite->addObserver(new TextLoggingObserver($renderer, $this->textLogFile)); } return $testSuite; }
private function getPathToTimeCollectorFile(Container $container) { return $container->getTempDirectory() . '/phpunit.times.humbug.json'; }