From 19e35a6e06fc9ab296573db36ab6346a8ddf0d14 Mon Sep 17 00:00:00 2001 From: Sebastian Schreiber Date: Wed, 17 Apr 2024 10:19:07 +0200 Subject: [PATCH] TASK: Refactor away from FractoConfig --- .gitignore | 1 + .phpunit.result.cache | 1 - fractor/bin/fractor.php | 4 +- fractor/config/application.php | 8 +-- fractor/src/Command/ProcessCommand.php | 1 - fractor/src/Configuration/FractorConfig.php | 68 ------------------- fractor/src/Configuration/Option.php | 3 +- ...lder.php => ContainerContainerBuilder.php} | 21 ++---- fractor/src/Factory/ConfigurationFactory.php | 4 +- fractor/src/Fractor/FractorRunner.php | 1 - .../PHPUnit/AbstractFractorTestCase.php | 7 +- fractor/src/ValueObject/Configuration.php | 3 +- .../tests/Configuration/FractorConfigTest.php | 62 ----------------- fractor/tests/FileSystem/FileFinderTest.php | 5 -- .../FractorRunner/FractorRunnerTest.php | 5 -- .../FractorRunner/config/application.php | 3 + .../Fractor/FractorRunner/config/fractor.php | 8 --- .../AddRenderTypeToFlexFormFractorTest.php | 6 +- .../Rules/FlexForm/config/application.php | 9 +++ .../tests/Rules/FlexForm/config/fractor.php | 8 --- 20 files changed, 31 insertions(+), 197 deletions(-) create mode 100644 .gitignore delete mode 100644 .phpunit.result.cache delete mode 100644 fractor/src/Configuration/FractorConfig.php rename fractor/src/DependencyInjection/{ContainerBuilder.php => ContainerContainerBuilder.php} (66%) delete mode 100644 fractor/tests/Configuration/FractorConfigTest.php delete mode 100644 fractor/tests/Fractor/FractorRunner/config/fractor.php create mode 100644 typo3-fractor/tests/Rules/FlexForm/config/application.php delete mode 100644 typo3-fractor/tests/Rules/FlexForm/config/fractor.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..143c4262 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.phpunit.result.cache \ No newline at end of file diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index 4a5ded99..00000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -{"version":1,"defects":{"Fractor\\FractorRunner\\FractorRunnerTest::test":8},"times":{"Fractor\\FractorRunner\\FractorRunnerTest::test":0.005}} \ No newline at end of file diff --git a/fractor/bin/fractor.php b/fractor/bin/fractor.php index 3be49dcb..d7872928 100755 --- a/fractor/bin/fractor.php +++ b/fractor/bin/fractor.php @@ -1,7 +1,7 @@ createDependencyInjectionContainer($configFile); +$container = (new ContainerContainerBuilder())->createDependencyInjectionContainer([$configFile]); /** @var FractorApplication $application */ $application = $container->get(FractorApplication::class); diff --git a/fractor/config/application.php b/fractor/config/application.php index dd9815c9..68d853c4 100644 --- a/fractor/config/application.php +++ b/fractor/config/application.php @@ -1,6 +1,6 @@ parameters(); - $parameters->set(\a9f\Fractor\Configuration\Option::PATHS, []); - $parameters->set(\a9f\Fractor\Configuration\Option::FILE_EXTENSIONS, []); + $parameters->set(Option::PATHS, []); + $parameters->set(Option::FILE_EXTENSIONS, []); $services = $containerConfigurator->services(); $services->defaults() ->autowire() @@ -37,8 +37,6 @@ ->alias(ParameterBagInterface::class, 'parameter_bag'); $services->set(FractorRunner::class)->arg('$processors', tagged_iterator('fractor.file_processor')); - $services->set(FractorConfig::class) - ->lazy(); $containerBuilder->registerForAutoconfiguration(FileProcessor::class)->addTag('fractor.file_processor'); }; diff --git a/fractor/src/Command/ProcessCommand.php b/fractor/src/Command/ProcessCommand.php index 7cf190c2..1a37199e 100644 --- a/fractor/src/Command/ProcessCommand.php +++ b/fractor/src/Command/ProcessCommand.php @@ -2,7 +2,6 @@ namespace a9f\Fractor\Command; -use a9f\Fractor\Configuration\FractorConfig; use a9f\Fractor\Factory\ConfigurationFactory; use a9f\Fractor\Fractor\FractorRunner; use Symfony\Component\Console\Attribute\AsCommand; diff --git a/fractor/src/Configuration/FractorConfig.php b/fractor/src/Configuration/FractorConfig.php deleted file mode 100644 index e3d57aa1..00000000 --- a/fractor/src/Configuration/FractorConfig.php +++ /dev/null @@ -1,68 +0,0 @@ - */ - private array $paths = []; - - /** @var list */ - private array $fileExtensions = []; - - /** - * @param non-empty-list $paths A list of paths to process - */ - public function setPaths(array $paths): self - { - $this->paths = $paths; - return $this; - } - - /** - * @return list - */ - public function getPaths(): array - { - return $this->paths; - } - - /** - * @param list $extensions - */ - public function setFileExtensions(array $extensions): self - { - $this->fileExtensions = $extensions; - - return $this; - } - - /** - * @return list - */ - public function getFileExtensions(): array - { - return $this->fileExtensions; - } - - public function import(string $configFile): void - { - if (!file_exists($configFile)) { - throw new \RuntimeException(sprintf('Config file %s does not exist, cannot import', $configFile)); - } - - $closure = (require $configFile); - if (!is_callable($closure)) { - throw new \RuntimeException(sprintf( - 'Fractor config files should return a callable for configuration, %s returned %s instead', - $configFile, - get_debug_type($closure) - )); - } - - /** @var callable(FractorConfig): void $closure */ - $closure($this); - } -} diff --git a/fractor/src/Configuration/Option.php b/fractor/src/Configuration/Option.php index 9f9e5b22..f1f1dc7e 100644 --- a/fractor/src/Configuration/Option.php +++ b/fractor/src/Configuration/Option.php @@ -1,4 +1,5 @@ $additionalConfigFiles */ - public function createDependencyInjectionContainer(?string $fractorConfigFile, array $additionalConfigFiles = []): ContainerInterface + public function createDependencyInjectionContainer(array $additionalConfigFiles = []): ContainerInterface { - $config = new FractorConfig(); - - $definition = new Definition(FractorConfig::class); - $definition->setPublic(true); - $config->set(Container::class, $config); - $config->set(FractorConfig::class, $config); - + $config = new \Symfony\Component\DependencyInjection\ContainerBuilder(); $fileLoader = new PhpFileLoader($config, new FileLocator(__DIR__ . '/../../config/')); $fileLoader->load('application.php'); @@ -31,10 +22,6 @@ public function createDependencyInjectionContainer(?string $fractorConfigFile, a $config->addCompilerPass(new CommandsCompilerPass()); - if ($fractorConfigFile !== null && is_file($fractorConfigFile)) { - $config->import($fractorConfigFile); - } - foreach ($additionalConfigFiles as $additionalConfigFile) { $fileLoader = new PhpFileLoader($config, new FileLocator(dirname($additionalConfigFile))); $fileLoader->load($additionalConfigFile); @@ -45,7 +32,7 @@ public function createDependencyInjectionContainer(?string $fractorConfigFile, a return $config; } - private function importExtensionConfigurations(FractorConfig $config): void + private function importExtensionConfigurations(\Symfony\Component\DependencyInjection\ContainerBuilder $config): void { if (!class_exists('a9f\\FractorExtensionInstaller\\Generated\\InstalledPackages')) { return; diff --git a/fractor/src/Factory/ConfigurationFactory.php b/fractor/src/Factory/ConfigurationFactory.php index 313d5450..afe8cba4 100644 --- a/fractor/src/Factory/ConfigurationFactory.php +++ b/fractor/src/Factory/ConfigurationFactory.php @@ -1,9 +1,9 @@ parameterBag->get(Option::PATHS), ); } -} \ No newline at end of file +} diff --git a/fractor/src/Fractor/FractorRunner.php b/fractor/src/Fractor/FractorRunner.php index 6abb9cb9..b8fc8181 100644 --- a/fractor/src/Fractor/FractorRunner.php +++ b/fractor/src/Fractor/FractorRunner.php @@ -2,7 +2,6 @@ namespace a9f\Fractor\Fractor; -use a9f\Fractor\Configuration\FractorConfig; use a9f\Fractor\Contract\FileProcessor; use a9f\Fractor\FileSystem\FileCollector; use a9f\Fractor\FileSystem\FileFinder; diff --git a/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php b/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php index 3a190e70..f9042301 100644 --- a/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php +++ b/fractor/src/Testing/PHPUnit/AbstractFractorTestCase.php @@ -4,8 +4,7 @@ namespace a9f\Fractor\Testing\PHPUnit; -use a9f\Fractor\Configuration\FractorConfig; -use a9f\Fractor\DependencyInjection\ContainerBuilder; +use a9f\Fractor\DependencyInjection\ContainerContainerBuilder; use a9f\Fractor\Exception\ShouldNotHappenException; use a9f\Fractor\Factory\ConfigurationFactory; use a9f\Fractor\FileSystem\FileCollector; @@ -19,8 +18,6 @@ abstract class AbstractFractorTestCase extends TestCase private FractorRunner $fractorRunner; protected FileCollector $fileCollector; - abstract protected function provideConfigFilePath(): ?string; - /** * @return array */ @@ -38,7 +35,7 @@ protected function setUp(): void protected function bootFromConfigFile(): void { - $this->currentContainer = (new ContainerBuilder())->createDependencyInjectionContainer($this->provideConfigFilePath(), $this->additionalConfigurationFiles()); + $this->currentContainer = (new ContainerContainerBuilder())->createDependencyInjectionContainer($this->additionalConfigurationFiles()); } protected function doTest(): void diff --git a/fractor/src/ValueObject/Configuration.php b/fractor/src/ValueObject/Configuration.php index 1bea6801..6aab4b48 100644 --- a/fractor/src/ValueObject/Configuration.php +++ b/fractor/src/ValueObject/Configuration.php @@ -1,4 +1,5 @@ paths; } -} \ No newline at end of file +} diff --git a/fractor/tests/Configuration/FractorConfigTest.php b/fractor/tests/Configuration/FractorConfigTest.php deleted file mode 100644 index dc28a4f3..00000000 --- a/fractor/tests/Configuration/FractorConfigTest.php +++ /dev/null @@ -1,62 +0,0 @@ -placeConfigFileInTemporaryFolderAndImport($subject, $closure); - - self::assertTrue($GLOBALS['called']); - } - - #[Test] - public function importFileThrowsExceptionIfNoClosureIsReturned(): void - { - $subject = new FractorConfig(); - - $this->expectException(\RuntimeException::class); - - $closure = <<placeConfigFileInTemporaryFolderAndImport($subject, $closure); - } - - private function placeConfigFileInTemporaryFolderAndImport(FractorConfig $config, string $closure): void - { - $tempFile = tempnam(sys_get_temp_dir(), 'fractor-test'); - self::assertIsString($tempFile); - try { - file_put_contents($tempFile, $closure); - - $config->import($tempFile); - } finally { - if (file_exists($tempFile)) { - unlink($tempFile); - } - } - } -} diff --git a/fractor/tests/FileSystem/FileFinderTest.php b/fractor/tests/FileSystem/FileFinderTest.php index 7cb2d862..8cd0c520 100644 --- a/fractor/tests/FileSystem/FileFinderTest.php +++ b/fractor/tests/FileSystem/FileFinderTest.php @@ -37,9 +37,4 @@ public function findAllNonEmptyFilesInGivenDirectoriesWithGivenExtensions(): voi { self::assertCount(2, $this->subject->findFiles([__DIR__ . '/Fixture/DirectorToSearchIn'], ['txt', 'json'])); } - - protected function provideConfigFilePath(): ?string - { - return null; - } } diff --git a/fractor/tests/Fractor/FractorRunner/FractorRunnerTest.php b/fractor/tests/Fractor/FractorRunner/FractorRunnerTest.php index d6fafefe..b94e06c7 100644 --- a/fractor/tests/Fractor/FractorRunner/FractorRunnerTest.php +++ b/fractor/tests/Fractor/FractorRunner/FractorRunnerTest.php @@ -8,11 +8,6 @@ final class FractorRunnerTest extends AbstractFractorTestCase { - protected function provideConfigFilePath(): ?string - { - return __DIR__ . '/config/fractor.php'; - } - public function test(): void { $this->doTest(); diff --git a/fractor/tests/Fractor/FractorRunner/config/application.php b/fractor/tests/Fractor/FractorRunner/config/application.php index 46fb1d23..a3535ac5 100644 --- a/fractor/tests/Fractor/FractorRunner/config/application.php +++ b/fractor/tests/Fractor/FractorRunner/config/application.php @@ -8,6 +8,9 @@ use function Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator; return static function (ContainerConfigurator $containerConfigurator, ContainerBuilder $containerBuilder): void { + $parameters = $containerConfigurator->parameters(); + $parameters->set(\a9f\Fractor\Configuration\Option::FILE_EXTENSIONS, ['txt']); + $parameters->set(\a9f\Fractor\Configuration\Option::PATHS, [__DIR__ . '/../Fixture/']); $services = $containerConfigurator->services(); $services->defaults() ->autowire() diff --git a/fractor/tests/Fractor/FractorRunner/config/fractor.php b/fractor/tests/Fractor/FractorRunner/config/fractor.php deleted file mode 100644 index 7b9847b1..00000000 --- a/fractor/tests/Fractor/FractorRunner/config/fractor.php +++ /dev/null @@ -1,8 +0,0 @@ -setPaths([__DIR__ . '/../Fixture/']); - $config->setFileExtensions(['txt']); -}; diff --git a/typo3-fractor/tests/Rules/FlexForm/AddRenderTypeToFlexFormFractorTest.php b/typo3-fractor/tests/Rules/FlexForm/AddRenderTypeToFlexFormFractorTest.php index 81ceab0a..54ddc989 100644 --- a/typo3-fractor/tests/Rules/FlexForm/AddRenderTypeToFlexFormFractorTest.php +++ b/typo3-fractor/tests/Rules/FlexForm/AddRenderTypeToFlexFormFractorTest.php @@ -21,16 +21,12 @@ public function test(): void self::assertStringEqualsFile(__DIR__ . '/Assertions/SelectWithoutRenderType.xml', $file->getContent()); } - protected function provideConfigFilePath(): ?string - { - return __DIR__ . '/config/fractor.php'; - } - protected function additionalConfigurationFiles(): array { return [ __DIR__ . '/../../../../fractor-xml/config/application.php', __DIR__ . '/../../../config/application.php', + __DIR__ . '/config/application.php', ]; } } diff --git a/typo3-fractor/tests/Rules/FlexForm/config/application.php b/typo3-fractor/tests/Rules/FlexForm/config/application.php new file mode 100644 index 00000000..59d8e916 --- /dev/null +++ b/typo3-fractor/tests/Rules/FlexForm/config/application.php @@ -0,0 +1,9 @@ +parameters(); + $parameters->set(\a9f\Fractor\Configuration\Option::FILE_EXTENSIONS, ['xml']); + $parameters->set(\a9f\Fractor\Configuration\Option::PATHS, [__DIR__ . '/../Fixture/']); +}; diff --git a/typo3-fractor/tests/Rules/FlexForm/config/fractor.php b/typo3-fractor/tests/Rules/FlexForm/config/fractor.php deleted file mode 100644 index 5b5ec6ad..00000000 --- a/typo3-fractor/tests/Rules/FlexForm/config/fractor.php +++ /dev/null @@ -1,8 +0,0 @@ -setPaths([__DIR__ . '/../Fixture/']); - $config->setFileExtensions(['xml']); -};