* Dariusz RumiƄski * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace PhpCsFixer\Tests\Console; use PhpCsFixer\Console\Application; use PhpCsFixer\Console\Command\WorkerCommand; use PhpCsFixer\Tests\TestCase; use PhpCsFixer\ToolInfo; use Symfony\Component\Console\Tester\ApplicationTester; /** * @internal * * @covers \PhpCsFixer\Console\Application */ final class ApplicationTest extends TestCase { public function testApplication(): void { $regex = '/^PHP CS Fixer \d+.\d+.\d+(-DEV)?<\/info> .+<\/info>' .' by Fabien Potencier<\/comment>, Dariusz Ruminski<\/comment> and contributors<\/comment>\.' ."\nPHP runtime: \\d+.\\d+.\\d+(-dev)?<\\/info>$/"; self::assertMatchesRegularExpression($regex, (new Application())->getLongVersion()); } public function testGetMajorVersion(): void { self::assertSame(3, Application::getMajorVersion()); } public function testWorkerExceptionsAreRenderedInMachineFriendlyWay(): void { $app = new Application(); $app->add(new WorkerCommand(new ToolInfo())); $app->setAutoExit(false); // see: https://symfony.com/doc/current/console.html#testing-commands $appTester = new ApplicationTester($app); $appTester->run(['worker']); self::assertStringContainsString( WorkerCommand::ERROR_PREFIX.'{"class":"PhpCsFixer\\\Runner\\\Parallel\\\ParallelisationException","message":"Missing parallelisation options"', $appTester->getDisplay() ); } }