From dcf3450f3a44cb0f6db8c1b31d71de16a31114f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20H=C3=A4u=C3=9Fler?= Date: Wed, 22 Mar 2023 19:13:04 +0100 Subject: [PATCH] [BUGFIX] Move artifact generation to dumpBuildArtifact step --- src/Builder/BuildResult.php | 18 ------------------ src/Builder/Generator/Generator.php | 4 ++-- .../Generator/Step/DumpBuildArtifactStep.php | 9 +++++++-- tests/src/Builder/ArtifactGeneratorTest.php | 1 - tests/src/Builder/BuildResultTest.php | 15 --------------- .../Builder/Generator/Step/CleanUpStepTest.php | 1 - .../Step/CollectBuildInstructionsStepTest.php | 2 -- .../Step/DumpBuildArtifactStepTest.php | 4 ++-- .../Step/GenerateBuildArtifactStepTest.php | 5 ++--- .../InstallComposerDependenciesStepTest.php | 1 - .../Step/ProcessSharedSourceFilesStepTest.php | 1 - .../Step/ProcessSourceFilesStepTest.php | 2 -- .../Generator/Step/ShowNextStepsStepTest.php | 1 - .../src/Event/BuildStepProcessedEventTest.php | 1 - tests/src/Event/BuildStepRevertedEventTest.php | 1 - .../Event/ProjectBuildFinishedEventTest.php | 1 - 16 files changed, 13 insertions(+), 54 deletions(-) diff --git a/src/Builder/BuildResult.php b/src/Builder/BuildResult.php index a04c3a1e..6a9296ca 100644 --- a/src/Builder/BuildResult.php +++ b/src/Builder/BuildResult.php @@ -23,7 +23,6 @@ namespace CPSIT\ProjectBuilder\Builder; -use CPSIT\ProjectBuilder\Helper; use CPSIT\ProjectBuilder\Resource; use Symfony\Component\Filesystem; use Symfony\Component\Finder; @@ -48,7 +47,6 @@ final class BuildResult public function __construct( private readonly BuildInstructions $instructions, - private readonly ArtifactGenerator $artifactGenerator, ) { } @@ -84,15 +82,6 @@ public function setArtifactFile(?Finder\SplFileInfo $artifactFile): self return $this; } - public function getArtifact(): ?Artifact\Artifact - { - if (null !== $this->artifactFile) { - return $this->generateArtifact($this->artifactFile); - } - - return null; - } - /** * @return array */ @@ -149,11 +138,4 @@ public function getWrittenDirectory(): string return $this->instructions->getTemporaryDirectory(); } - - private function generateArtifact(Finder\SplFileInfo $artifactFile): Artifact\Artifact - { - $composer = Resource\Local\Composer::createComposer(Helper\FilesystemHelper::getProjectRootPath()); - - return $this->artifactGenerator->build($artifactFile, $this, $composer->getPackage()); - } } diff --git a/src/Builder/Generator/Generator.php b/src/Builder/Generator/Generator.php index dc6998cf..6f2b5f71 100644 --- a/src/Builder/Generator/Generator.php +++ b/src/Builder/Generator/Generator.php @@ -65,7 +65,7 @@ public function run(string $targetDirectory): Builder\BuildResult } $instructions = new Builder\BuildInstructions($this->config, $targetDirectory); - $result = new Builder\BuildResult($instructions, $this->artifactGenerator); + $result = new Builder\BuildResult($instructions); $this->eventDispatcher->dispatch(new Event\ProjectBuildStartedEvent($instructions)); @@ -106,7 +106,7 @@ public function run(string $targetDirectory): Builder\BuildResult public function dumpArtifact(Builder\BuildResult $result): void { - $step = new Builder\Generator\Step\DumpBuildArtifactStep($this->filesystem, $this->writer); + $step = new Builder\Generator\Step\DumpBuildArtifactStep($this->filesystem, $this->writer, $this->artifactGenerator); $step->run($result); } diff --git a/src/Builder/Generator/Step/DumpBuildArtifactStep.php b/src/Builder/Generator/Step/DumpBuildArtifactStep.php index 0e60387f..51d4b38c 100644 --- a/src/Builder/Generator/Step/DumpBuildArtifactStep.php +++ b/src/Builder/Generator/Step/DumpBuildArtifactStep.php @@ -24,6 +24,8 @@ namespace CPSIT\ProjectBuilder\Builder\Generator\Step; use CPSIT\ProjectBuilder\Builder; +use CPSIT\ProjectBuilder\Helper; +use CPSIT\ProjectBuilder\Resource; use Symfony\Component\Filesystem; /** @@ -41,6 +43,7 @@ final class DumpBuildArtifactStep extends AbstractStep public function __construct( private readonly Filesystem\Filesystem $filesystem, private readonly Builder\Writer\JsonFileWriter $writer, + private readonly Builder\ArtifactGenerator $artifactGenerator, ) { parent::__construct(); } @@ -48,14 +51,16 @@ public function __construct( public function run(Builder\BuildResult $buildResult): bool { $artifactFile = $buildResult->getArtifactFile(); - $artifact = $buildResult->getArtifact(); - if (null === $artifactFile || null === $artifact) { + if (null === $artifactFile) { return true; } $buildResult->applyStep($this); + $composer = Resource\Local\Composer::createComposer(Helper\FilesystemHelper::getProjectRootPath()); + $artifact = $this->artifactGenerator->build($artifactFile, $buildResult, $composer->getPackage()); + return $this->writer->write($artifactFile, $artifact); } diff --git a/tests/src/Builder/ArtifactGeneratorTest.php b/tests/src/Builder/ArtifactGeneratorTest.php index aabd7b43..f2fc3244 100644 --- a/tests/src/Builder/ArtifactGeneratorTest.php +++ b/tests/src/Builder/ArtifactGeneratorTest.php @@ -55,7 +55,6 @@ protected function setUp(): void self::$container->get('app.config'), 'foo', ), - $this->subject, ); $this->rootPackage = Src\Resource\Local\Composer::createComposer(dirname(__DIR__, 3))->getPackage(); } diff --git a/tests/src/Builder/BuildResultTest.php b/tests/src/Builder/BuildResultTest.php index 3b9e2412..b8a37750 100644 --- a/tests/src/Builder/BuildResultTest.php +++ b/tests/src/Builder/BuildResultTest.php @@ -49,7 +49,6 @@ protected function setUp(): void ); $this->subject = new Src\Builder\BuildResult( $this->instructions, - self::$container->get(Src\Builder\ArtifactGenerator::class), ); } @@ -82,20 +81,6 @@ public function getArtifactFileReturnsArtifactFile(): void self::assertSame($artifactFile, $this->subject->setArtifactFile($artifactFile)->getArtifactFile()); } - /** - * @test - */ - public function getArtifactReturnsArtifact(): void - { - self::assertNull($this->subject->getArtifact()); - - $artifactFile = Src\Helper\FilesystemHelper::createFileObject('/foo', 'baz'); - - $this->subject->setArtifactFile($artifactFile); - - self::assertInstanceOf(Src\Builder\Artifact\Artifact::class, $this->subject->getArtifact()); - } - /** * @test */ diff --git a/tests/src/Builder/Generator/Step/CleanUpStepTest.php b/tests/src/Builder/Generator/Step/CleanUpStepTest.php index 3d8dbb53..e6349c77 100644 --- a/tests/src/Builder/Generator/Step/CleanUpStepTest.php +++ b/tests/src/Builder/Generator/Step/CleanUpStepTest.php @@ -49,7 +49,6 @@ protected function setUp(): void self::$config, Src\Helper\FilesystemHelper::getNewTemporaryDirectory(), ), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); } diff --git a/tests/src/Builder/Generator/Step/CollectBuildInstructionsStepTest.php b/tests/src/Builder/Generator/Step/CollectBuildInstructionsStepTest.php index 0dcdd5af..30872868 100644 --- a/tests/src/Builder/Generator/Step/CollectBuildInstructionsStepTest.php +++ b/tests/src/Builder/Generator/Step/CollectBuildInstructionsStepTest.php @@ -66,7 +66,6 @@ public function runAppliesNullAsDefaultValueOnSkippedProperties(): void $buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions($config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); $this->subject->run($buildResult); @@ -108,7 +107,6 @@ public function runAppliesNullAsDefaultValueOnSkippedSubProperties(): void $buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions($config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); $this->subject->run($buildResult); diff --git a/tests/src/Builder/Generator/Step/DumpBuildArtifactStepTest.php b/tests/src/Builder/Generator/Step/DumpBuildArtifactStepTest.php index 3483dfae..14688481 100644 --- a/tests/src/Builder/Generator/Step/DumpBuildArtifactStepTest.php +++ b/tests/src/Builder/Generator/Step/DumpBuildArtifactStepTest.php @@ -50,14 +50,14 @@ final class DumpBuildArtifactStepTest extends Tests\ContainerAwareTestCase protected function setUp(): void { $this->filesystem = self::$container->get(Filesystem\Filesystem::class); + $this->artifactGenerator = self::$container->get(Src\Builder\ArtifactGenerator::class); $this->subject = new Src\Builder\Generator\Step\DumpBuildArtifactStep( $this->filesystem, self::$container->get(Src\Builder\Writer\JsonFileWriter::class), + $this->artifactGenerator, ); - $this->artifactGenerator = self::$container->get(Src\Builder\ArtifactGenerator::class); $this->buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - $this->artifactGenerator, ); $this->artifactFile = Src\Helper\FilesystemHelper::createFileObject( $this->buildResult->getWrittenDirectory(), diff --git a/tests/src/Builder/Generator/Step/GenerateBuildArtifactStepTest.php b/tests/src/Builder/Generator/Step/GenerateBuildArtifactStepTest.php index 656150ee..63825841 100644 --- a/tests/src/Builder/Generator/Step/GenerateBuildArtifactStepTest.php +++ b/tests/src/Builder/Generator/Step/GenerateBuildArtifactStepTest.php @@ -48,7 +48,6 @@ protected function setUp(): void $this->filesystem = self::$container->get(Filesystem\Filesystem::class); $this->buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); $this->artifactFile = Src\Helper\FilesystemHelper::createFileObject( $this->buildResult->getWrittenDirectory(), @@ -71,7 +70,7 @@ public function runAsksForConfirmationIfArtifactPathAlreadyExists(bool $continue self::assertSame($expected, $this->subject->run($this->buildResult)); self::assertSame(!$expected, $this->subject->isStopped()); self::assertFalse($this->buildResult->isStepApplied($this->subject)); - self::assertNull($this->buildResult->getArtifact()); + self::assertNull($this->buildResult->getArtifactFile()); self::assertStringContainsString( 'The build artifact cannot be generated because the resulting file already exists.', self::$io->getOutput(), @@ -84,7 +83,7 @@ public function runAsksForConfirmationIfArtifactPathAlreadyExists(bool $continue public function runGeneratesArtifact(): void { self::assertTrue($this->subject->run($this->buildResult)); - self::assertInstanceOf(Src\Builder\Artifact\Artifact::class, $this->buildResult->getArtifact()); + self::assertEquals($this->artifactFile, $this->buildResult->getArtifactFile()); self::assertTrue($this->buildResult->isStepApplied($this->subject)); } diff --git a/tests/src/Builder/Generator/Step/InstallComposerDependenciesStepTest.php b/tests/src/Builder/Generator/Step/InstallComposerDependenciesStepTest.php index 354bb878..2ee60a16 100644 --- a/tests/src/Builder/Generator/Step/InstallComposerDependenciesStepTest.php +++ b/tests/src/Builder/Generator/Step/InstallComposerDependenciesStepTest.php @@ -49,7 +49,6 @@ protected function setUp(): void $this->subject = self::$container->get(Src\Builder\Generator\Step\InstallComposerDependenciesStep::class); $this->buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); } diff --git a/tests/src/Builder/Generator/Step/ProcessSharedSourceFilesStepTest.php b/tests/src/Builder/Generator/Step/ProcessSharedSourceFilesStepTest.php index 71c9cd22..d5a6e392 100644 --- a/tests/src/Builder/Generator/Step/ProcessSharedSourceFilesStepTest.php +++ b/tests/src/Builder/Generator/Step/ProcessSharedSourceFilesStepTest.php @@ -45,7 +45,6 @@ protected function setUp(): void $this->subject->setConfig($step); $this->result = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); } diff --git a/tests/src/Builder/Generator/Step/ProcessSourceFilesStepTest.php b/tests/src/Builder/Generator/Step/ProcessSourceFilesStepTest.php index 5b5e3f90..ece7c0bc 100644 --- a/tests/src/Builder/Generator/Step/ProcessSourceFilesStepTest.php +++ b/tests/src/Builder/Generator/Step/ProcessSourceFilesStepTest.php @@ -48,7 +48,6 @@ protected function setUp(): void $this->subject->setConfig($step); $this->result = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); } @@ -94,7 +93,6 @@ public function runCanProcessTheSameSourceFileWithMultipleConditions( $result = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions($config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); $this->subject->setConfig($step); diff --git a/tests/src/Builder/Generator/Step/ShowNextStepsStepTest.php b/tests/src/Builder/Generator/Step/ShowNextStepsStepTest.php index 7bff1e83..fb63bacd 100644 --- a/tests/src/Builder/Generator/Step/ShowNextStepsStepTest.php +++ b/tests/src/Builder/Generator/Step/ShowNextStepsStepTest.php @@ -44,7 +44,6 @@ protected function setUp(): void $this->subject = self::$container->get(Src\Builder\Generator\Step\ShowNextStepsStep::class); $this->result = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); } diff --git a/tests/src/Event/BuildStepProcessedEventTest.php b/tests/src/Event/BuildStepProcessedEventTest.php index 4e126d7b..ca4e5af5 100644 --- a/tests/src/Event/BuildStepProcessedEventTest.php +++ b/tests/src/Event/BuildStepProcessedEventTest.php @@ -43,7 +43,6 @@ protected function setUp(): void $this->step = new Tests\Fixtures\DummyStep(); $this->buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); $this->subject = new Src\Event\BuildStepProcessedEvent( $this->step, diff --git a/tests/src/Event/BuildStepRevertedEventTest.php b/tests/src/Event/BuildStepRevertedEventTest.php index c9eb7537..9e6e4df6 100644 --- a/tests/src/Event/BuildStepRevertedEventTest.php +++ b/tests/src/Event/BuildStepRevertedEventTest.php @@ -43,7 +43,6 @@ protected function setUp(): void $this->step = new Tests\Fixtures\DummyStep(); $this->buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); $this->subject = new Src\Event\BuildStepRevertedEvent( $this->step, diff --git a/tests/src/Event/ProjectBuildFinishedEventTest.php b/tests/src/Event/ProjectBuildFinishedEventTest.php index 9a0bcf2f..b355ed50 100644 --- a/tests/src/Event/ProjectBuildFinishedEventTest.php +++ b/tests/src/Event/ProjectBuildFinishedEventTest.php @@ -41,7 +41,6 @@ protected function setUp(): void { $this->buildResult = new Src\Builder\BuildResult( new Src\Builder\BuildInstructions(self::$config, 'foo'), - self::$container->get(Src\Builder\ArtifactGenerator::class), ); $this->subject = new Src\Event\ProjectBuildFinishedEvent( $this->buildResult,