make FixtureSplitter return SmartFileInfo

This commit is contained in:
TomasVotruba 2020-05-31 14:13:30 +02:00
parent f27f50bf9c
commit df3c56f616
4 changed files with 29 additions and 39 deletions

View File

@ -13,7 +13,7 @@ final class ReplaceEventManagerWithEventSubscriberRectorTest extends AbstractRec
{
$this->doTestFile(__DIR__ . '/Fixture/fixture.php.inc');
$expectedEventFilePath = dirname($this->originalTempFile) . '/Event/SomeClassCopyEvent.php';
$expectedEventFilePath = $this->originalTempFileInfo->getPath() . '/Event/SomeClassCopyEvent.php';
$this->assertFileExists($expectedEventFilePath);
$this->assertFileEquals(__DIR__ . '/Source/ExpectedSomeClassCopyEvent.php', $expectedEventFilePath);

View File

@ -18,7 +18,7 @@ final class ReplaceMagicPropertyEventWithEventClassRectorTest extends AbstractRe
{
$this->doTestFile(__DIR__ . '/Fixture/simple_event.php.inc');
$expectedEventFilePath = dirname($this->originalTempFile) . '/Event/FileManagerUploadEvent.php';
$expectedEventFilePath = $this->originalTempFileInfo->getPath() . '/Event/FileManagerUploadEvent.php';
$this->assertFileExists($expectedEventFilePath);
$this->assertFileEquals(__DIR__ . '/Source/ExpectedFileManagerUploadEvent.php', $expectedEventFilePath);
}
@ -27,7 +27,7 @@ final class ReplaceMagicPropertyEventWithEventClassRectorTest extends AbstractRe
{
$this->doTestFile(__DIR__ . '/Fixture/duplicated_event_params.php.inc');
$expectedEventFilePath = dirname($this->originalTempFile) . '/Event/DuplicatedEventParamsUploadEvent.php';
$expectedEventFilePath = $this->originalTempFileInfo->getPath() . '/Event/DuplicatedEventParamsUploadEvent.php';
$this->assertFileExists($expectedEventFilePath);
$this->assertFileEquals(
__DIR__ . '/Source/ExpectedDuplicatedEventParamsUploadEvent.php',

View File

@ -42,9 +42,9 @@ abstract class AbstractRectorTestCase extends AbstractGenericRectorTestCase
protected $parameterProvider;
/**
* @var string
* @var SmartFileInfo
*/
protected $originalTempFile;
protected $originalTempFileInfo;
/**
* @var FixtureSplitter
@ -134,28 +134,22 @@ abstract class AbstractRectorTestCase extends AbstractGenericRectorTestCase
protected function doTestFile(string $fixtureFile): void
{
$smartFileInfo = new SmartFileInfo($fixtureFile);
[$originalFile, $changedFile] = $this->fixtureSplitter->splitContentToOriginalFileAndExpectedFile(
$smartFileInfo,
$fixtureFileInfo = new SmartFileInfo($fixtureFile);
[$originalFileInfo, $expectedFileInfo] = $this->fixtureSplitter->splitContentToOriginalFileAndExpectedFile(
$fixtureFileInfo,
$this->autoloadTestFixture
);
$this->nodeScopeResolver->setAnalysedFiles([$originalFile]);
$this->nodeScopeResolver->setAnalysedFiles([$originalFileInfo->getRealPath()]);
$this->doTestFileMatchesExpectedContent(
$originalFile,
$changedFile,
$smartFileInfo->getRelativeFilePathFromCwd()
);
$this->doTestFileMatchesExpectedContent($originalFileInfo, $expectedFileInfo, $fixtureFileInfo);
$this->originalTempFile = $originalFile;
$this->originalTempFileInfo = $originalFileInfo;
// runnable?
if (Strings::contains(FileSystem::read($originalFile), RunnableInterface::class)) {
$originalFileInfo = new SmartFileInfo($originalFile);
$changedFileInfo = new SmartFileInfo($changedFile);
$this->assertOriginalAndFixedFileResultEquals($originalFileInfo, $changedFileInfo);
if (Strings::contains($originalFileInfo->getContents(), RunnableInterface::class)) {
$this->assertOriginalAndFixedFileResultEquals($originalFileInfo, $expectedFileInfo);
}
}
@ -250,39 +244,32 @@ abstract class AbstractRectorTestCase extends AbstractGenericRectorTestCase
}
private function doTestFileMatchesExpectedContent(
string $originalFile,
string $expectedFile,
string $fixtureFile
SmartFileInfo $originalFileInfo,
SmartFileInfo $expectedFileInfo,
SmartFileInfo $fixtureFileInfo
): void {
$this->setParameter(Option::SOURCE, [$originalFile]);
$smartFileInfo = new SmartFileInfo($originalFile);
$this->setParameter(Option::SOURCE, [$originalFileInfo->getRealPath()]);
// life-cycle trio :)
$this->fileProcessor->parseFileInfoToLocalCache($smartFileInfo);
$this->fileProcessor->refactor($smartFileInfo);
$this->fileProcessor->parseFileInfoToLocalCache($originalFileInfo);
$this->fileProcessor->refactor($originalFileInfo);
$changedContent = $this->fileProcessor->printToString($smartFileInfo);
$changedContent = $this->fileProcessor->printToString($originalFileInfo);
$causedByFixtureMessage = $this->createCausedByFixtureMessage($fixtureFile);
$causedByFixtureMessage = $fixtureFileInfo->getRelativeFilePathFromCwd();
$removedAndAddedFilesProcessor = self::$container->get(RemovedAndAddedFilesProcessor::class);
$removedAndAddedFilesProcessor->run();
try {
$this->assertStringEqualsFile($expectedFile, $changedContent, $causedByFixtureMessage);
$this->assertStringEqualsFile($expectedFileInfo->getRealPath(), $changedContent, $causedByFixtureMessage);
} catch (ExpectationFailedException $expectationFailedException) {
$expectedFileContent = FileSystem::read($expectedFile);
$expectedFileContent = $expectedFileInfo->getContents();
$this->assertStringMatchesFormat($expectedFileContent, $changedContent, $causedByFixtureMessage);
}
}
private function createCausedByFixtureMessage(string $fixtureFile): string
{
return (new SmartFileInfo($fixtureFile))->getRelativeFilePathFromCwd();
}
private function createRectorRepositoryContainer(): void
{
if (self::$allRectorContainer === null) {

View File

@ -22,7 +22,7 @@ final class FixtureSplitter
}
/**
* @return string[]
* @return SmartFileInfo[]
*/
public function splitContentToOriginalFileAndExpectedFile(
SmartFileInfo $smartFileInfo,
@ -41,7 +41,10 @@ final class FixtureSplitter
require_once $originalFile;
}
return [$originalFile, $expectedFile];
$originalFileInfo = new SmartFileInfo($originalFile);
$expectedFileInfo = new SmartFileInfo($expectedFile);
return [$originalFileInfo, $expectedFileInfo];
}
public function createTemporaryPathWithPrefix(SmartFileInfo $smartFileInfo, string $prefix): string