From 3362d095b27d61052f3d7f735156b11cda7d6925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Mike=C5=A1?= Date: Fri, 10 May 2019 22:29:01 +0200 Subject: [PATCH 1/3] do not override printing files with previous stmts --- composer.json | 5 ++++- .../src/Rector/AbstractFileSystemRector.php | 15 ++++++++++++++- .../Psr4/MultipleClassFileToPsr4ClassesRector.php | 8 +++++--- .../MultipleClassFileToPsr4ClassesRectorTest.php | 6 +++--- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index da0f058b6bf8..27979dfbc36d 100644 --- a/composer.json +++ b/composer.json @@ -68,7 +68,10 @@ "Rector\\NetteTesterToPHPUnit\\": "packages/NetteTesterToPHPUnit/src", "Rector\\Nette\\": "packages/Nette/src", "Rector\\SOLID\\": "packages/SOLID/src" - } + }, + "classmap": [ + "MultipleFilesPsr4Bug" + ] }, "autoload-dev": { "psr-4": { diff --git a/packages/FileSystemRector/src/Rector/AbstractFileSystemRector.php b/packages/FileSystemRector/src/Rector/AbstractFileSystemRector.php index 96d01a6449b0..5f6b26242293 100644 --- a/packages/FileSystemRector/src/Rector/AbstractFileSystemRector.php +++ b/packages/FileSystemRector/src/Rector/AbstractFileSystemRector.php @@ -9,6 +9,7 @@ use Rector\FileSystemRector\Contract\FileSystemRectorInterface; use Rector\NodeTypeResolver\NodeScopeAndMetadataDecorator; use Rector\PhpParser\Parser\Parser; +use Rector\PhpParser\Printer\BetterStandardPrinter; use Rector\PhpParser\Printer\FormatPerservingPrinter; use Rector\Rector\AbstractRectorTrait; use Symplify\PackageBuilder\FileSystem\SmartFileInfo; @@ -61,7 +62,8 @@ public function setAbstractFileSystemRectorDependencies( FormatPerservingPrinter $formatPerservingPrinter, NodeScopeAndMetadataDecorator $nodeScopeAndMetadataDecorator, RemovedAndAddedFilesCollector $removedAndAddedFilesCollector, - Configuration $configuration + Configuration $configuration, + BetterStandardPrinter $betterStandardPrinter ): void { $this->parser = $parser; $this->lexer = $lexer; @@ -69,6 +71,7 @@ public function setAbstractFileSystemRectorDependencies( $this->nodeScopeAndMetadataDecorator = $nodeScopeAndMetadataDecorator; $this->removedAndAddedFilesCollector = $removedAndAddedFilesCollector; $this->configuration = $configuration; + $this->betterStandardPrinter = $betterStandardPrinter; } /** @@ -99,6 +102,16 @@ protected function printNodesToFilePath(array $nodes, string $fileDestination): $this->addFile($fileDestination, $fileContent); } + /** + * @param Node[] $nodes + */ + protected function printNewNodesToFilePath(array $nodes, string $fileDestination): void + { + $fileContent = $this->betterStandardPrinter->prettyPrint($nodes); + + $this->addFile($fileDestination, $fileContent); + } + protected function removeFile(SmartFileInfo $smartFileInfo): void { $this->removedAndAddedFilesCollector->removeFile($smartFileInfo); diff --git a/src/Rector/Psr4/MultipleClassFileToPsr4ClassesRector.php b/src/Rector/Psr4/MultipleClassFileToPsr4ClassesRector.php index f1e48b093821..a27bc253d505 100644 --- a/src/Rector/Psr4/MultipleClassFileToPsr4ClassesRector.php +++ b/src/Rector/Psr4/MultipleClassFileToPsr4ClassesRector.php @@ -66,7 +66,6 @@ final class SecondException extends Exception public function refactor(SmartFileInfo $smartFileInfo): void { $nodes = $this->parseFileInfoToNodes($smartFileInfo); - if ($this->shouldSkip($smartFileInfo, $nodes)) { return; } @@ -204,8 +203,11 @@ private function processNamespaceNodes(SmartFileInfo $smartFileInfo, array $name } // has file changed? - - $this->printNodesToFilePath($newStmtsSet, $fileDestination); + if ($shouldDelete) { + $this->printNewNodesToFilePath($newStmtsSet, $fileDestination); + } else { + $this->printNodesToFilePath($newStmtsSet, $fileDestination); + } } } } diff --git a/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php b/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php index c86c64a394c7..11a11289f003 100644 --- a/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php +++ b/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php @@ -45,10 +45,10 @@ protected function tearDown(): void /** * @param string[] $expectedExceptions - * @dataProvider provideWithoutNamespace - * @dataProvider provideExceptionsData + * @dataProvid_er provideWithoutNamespace + * @dataProvid_er provideExceptionsData * @dataProvider provideClassLike - * @dataProvider provideExceptionsData + * @dataProvid_er provideExceptionsData */ public function test(string $file, array $expectedExceptions): void { From f6bfa1215e173ef6dea2fbf6abf10161debb9a1c Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 23 May 2019 14:22:47 +0200 Subject: [PATCH 2/3] fixup! do not override printing files with previous stmts --- composer.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 27979dfbc36d..da0f058b6bf8 100644 --- a/composer.json +++ b/composer.json @@ -68,10 +68,7 @@ "Rector\\NetteTesterToPHPUnit\\": "packages/NetteTesterToPHPUnit/src", "Rector\\Nette\\": "packages/Nette/src", "Rector\\SOLID\\": "packages/SOLID/src" - }, - "classmap": [ - "MultipleFilesPsr4Bug" - ] + } }, "autoload-dev": { "psr-4": { From d2c3856b0425309bd72a52221eeabb0d4ee739f6 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 23 May 2019 14:23:06 +0200 Subject: [PATCH 3/3] fixup! fixup! do not override printing files with previous stmts --- .../MultipleClassFileToPsr4ClassesRectorTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php b/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php index 11a11289f003..c86c64a394c7 100644 --- a/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php +++ b/tests/Rector/Psr4/MultipleClassFileToPsr4ClassesRector/MultipleClassFileToPsr4ClassesRectorTest.php @@ -45,10 +45,10 @@ protected function tearDown(): void /** * @param string[] $expectedExceptions - * @dataProvid_er provideWithoutNamespace - * @dataProvid_er provideExceptionsData + * @dataProvider provideWithoutNamespace + * @dataProvider provideExceptionsData * @dataProvider provideClassLike - * @dataProvid_er provideExceptionsData + * @dataProvider provideExceptionsData */ public function test(string $file, array $expectedExceptions): void {