set('environment', 'development'); $this->command = new TwigLintCommand(); } public function testGetTemplateContents(): void { $contents = (new ReflectionMethod(TwigLintCommand::class, 'getTemplateContents'))->invokeArgs($this->command, [ __DIR__ . '/../_data/file_listing/subfolder/one.ini', ]); self::assertSame('key=value' . "\n", $contents); } public function testFindFiles(): void { $path = __DIR__ . '/../_data/file_listing'; $filesFound = (new ReflectionMethod(TwigLintCommand::class, 'findFiles'))->invokeArgs($this->command, [$path]); // Sort results to avoid file system test specific failures sort($filesFound, SORT_NATURAL); self::assertSame([ $path . DIRECTORY_SEPARATOR . 'one.txt', $path . DIRECTORY_SEPARATOR . 'subfolder' . DIRECTORY_SEPARATOR . 'one.ini', $path . DIRECTORY_SEPARATOR . 'subfolder' . DIRECTORY_SEPARATOR . 'zero.txt', $path . DIRECTORY_SEPARATOR . 'two.md', ], $filesFound); } public function testGetFilesInfo(): void { $path = __DIR__ . '/../_data/file_listing'; $filesInfos = (new ReflectionMethod(TwigLintCommand::class, 'getFilesInfo')) ->invokeArgs($this->command, [$path]); // Sort results to avoid file system test specific failures sort($filesInfos, SORT_REGULAR); self::assertSame([ ['template' => '', 'file' => $path . DIRECTORY_SEPARATOR . 'one.txt'], ['template' => '', 'file' => $path . DIRECTORY_SEPARATOR . 'two.md'], [ 'template' => '0000' . "\n", 'file' => $path . DIRECTORY_SEPARATOR . 'subfolder' . DIRECTORY_SEPARATOR . 'zero.txt', ], [ 'template' => 'key=value' . "\n", 'file' => $path . DIRECTORY_SEPARATOR . 'subfolder' . DIRECTORY_SEPARATOR . 'one.ini', ], ], $filesInfos); } public function testGetFilesInfoInvalidFile(): void { $twigLintCommand = new TwigLintCommand(); $path = __DIR__ . '/../_data/templates/lint_command'; $filesFound = $twigLintCommand->getFilesInfo($path); self::assertCount(2, $filesFound); array_multisort($filesFound); self::assertSame('{{ file }}' . "\n", $filesFound[0]['template']); self::assertSame($path . DIRECTORY_SEPARATOR . 'foo-valid.twig', $filesFound[0]['file']); self::assertSame('{{ file }' . "\n", $filesFound[1]['template']); self::assertSame($path . DIRECTORY_SEPARATOR . 'foo-invalid.twig', $filesFound[1]['file']); self::assertArrayHasKey('exception', $filesFound[1]); $exception = $filesFound[1]['exception']; self::assertInstanceOf(SyntaxError::class, $exception); self::assertSame( 'Unexpected "}" in "' . $path . DIRECTORY_SEPARATOR . 'foo-invalid.twig" at line 1.', $exception->getMessage(), ); } public function testGetContext(): void { $context = (new ReflectionMethod(TwigLintCommand::class, 'getContext')) ->invokeArgs($this->command, ['{{ file }', 0]); self::assertSame([1 => '{{ file }'], $context); $context = (new ReflectionMethod(TwigLintCommand::class, 'getContext')) ->invokeArgs($this->command, ['{{ file }', 3]); self::assertSame([1 => '{{ file }'], $context); $context = (new ReflectionMethod(TwigLintCommand::class, 'getContext')) ->invokeArgs($this->command, ['{{ file }', 5]); self::assertSame([], $context); } }