From c42e2d207486e56a611a20a51679c1a605bfcd09 Mon Sep 17 00:00:00 2001 From: Dariusz Ruminski Date: Wed, 28 Aug 2019 00:13:22 +0200 Subject: [PATCH] Port changes from upstream --- src/Chunk.php | 14 +++++++++++++- tests/ChunkTest.php | 15 +++++++++++---- tests/LongestCommonSubsequenceTest.php | 2 +- ...ictUnifiedDiffOutputBuilderIntegrationTest.php | 1 + .../Output/StrictUnifiedDiffOutputBuilderTest.php | 2 ++ tests/ParserTest.php | 13 ++++--------- tests/Utils/UnifiedDiffAssertTrait.php | 3 +++ 7 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/Chunk.php b/src/Chunk.php index 317ed867..49c77575 100644 --- a/src/Chunk.php +++ b/src/Chunk.php @@ -33,7 +33,7 @@ final class Chunk private $endRange; /** - * @var array + * @var Line[] */ private $lines; @@ -66,13 +66,25 @@ public function getEndRange() return $this->endRange; } + /** + * @return Line[] + */ public function getLines() { return $this->lines; } + /** + * @param Line[] $lines + */ public function setLines(array $lines) { + foreach ($lines as $line) { + if (!$line instanceof Line) { + throw new InvalidArgumentException; + } + } + $this->lines = $lines; } } diff --git a/tests/ChunkTest.php b/tests/ChunkTest.php index 29fec466..cf038cd0 100644 --- a/tests/ChunkTest.php +++ b/tests/ChunkTest.php @@ -14,6 +14,8 @@ /** * @covers PhpCsFixer\Diff\Chunk + * + * @uses PhpCsFixer\Diff\Line */ final class ChunkTest extends TestCase { @@ -27,6 +29,11 @@ protected function setUp() $this->chunk = new Chunk; } + public function testHasInitiallyNoLines() + { + $this->assertSame([], $this->chunk->getLines()); + } + public function testCanBeCreatedWithoutArguments() { $this->assertInstanceOf(Chunk::class, $this->chunk); @@ -59,10 +66,10 @@ public function testLinesCanBeRetrieved() public function testLinesCanBeSet() { - $this->assertSame([], $this->chunk->getLines()); + $lines = [new Line(Line::ADDED, 'added'), new Line(Line::REMOVED, 'removed')]; + + $this->chunk->setLines($lines); - $testValue = ['line0', 'line1']; - $this->chunk->setLines($testValue); - $this->assertSame($testValue, $this->chunk->getLines()); + $this->assertSame($lines, $this->chunk->getLines()); } } diff --git a/tests/LongestCommonSubsequenceTest.php b/tests/LongestCommonSubsequenceTest.php index 47856642..c49a58f1 100644 --- a/tests/LongestCommonSubsequenceTest.php +++ b/tests/LongestCommonSubsequenceTest.php @@ -35,7 +35,7 @@ abstract class LongestCommonSubsequenceTest extends TestCase protected function setUp() { $this->memoryLimit = \ini_get('memory_limit'); - \ini_set('memory_limit', '256M'); + \ini_set('memory_limit', '-1'); $this->implementation = $this->createImplementation(); } diff --git a/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php b/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php index 1c28f941..f39d8fea 100644 --- a/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php +++ b/tests/Output/Integration/StrictUnifiedDiffOutputBuilderIntegrationTest.php @@ -21,6 +21,7 @@ * * @uses PhpCsFixer\Diff\Differ * @uses PhpCsFixer\Diff\TimeEfficientLongestCommonSubsequenceCalculator + * @uses PhpCsFixer\Diff\MemoryEfficientLongestCommonSubsequenceCalculator * * @requires OS Linux */ diff --git a/tests/Output/StrictUnifiedDiffOutputBuilderTest.php b/tests/Output/StrictUnifiedDiffOutputBuilderTest.php index 0123d9a4..2c770c58 100644 --- a/tests/Output/StrictUnifiedDiffOutputBuilderTest.php +++ b/tests/Output/StrictUnifiedDiffOutputBuilderTest.php @@ -19,6 +19,8 @@ * @covers PhpCsFixer\Diff\Output\StrictUnifiedDiffOutputBuilder * * @uses PhpCsFixer\Diff\Differ + * @uses PhpCsFixer\Diff\TimeEfficientLongestCommonSubsequenceCalculator + * @uses PhpCsFixer\Diff\ConfigurationException */ final class StrictUnifiedDiffOutputBuilderTest extends TestCase { diff --git a/tests/ParserTest.php b/tests/ParserTest.php index 207e23d3..1bbe5968 100644 --- a/tests/ParserTest.php +++ b/tests/ParserTest.php @@ -38,12 +38,10 @@ public function testParse() $diffs = $this->parser->parse($content); - $this->assertInternalType('array', $diffs); $this->assertContainsOnlyInstancesOf(Diff::class, $diffs); $this->assertCount(1, $diffs); $chunks = $diffs[0]->getChunks(); - $this->assertInternalType('array', $chunks); $this->assertContainsOnlyInstancesOf(Chunk::class, $chunks); $this->assertCount(1, $chunks); @@ -75,7 +73,7 @@ public function testParseWithMultipleChunks() public function testParseWithRemovedLines() { - $content = <<parser->parse($content); - $this->assertInternalType('array', $diffs); $this->assertContainsOnlyInstancesOf(Diff::class, $diffs); $this->assertCount(1, $diffs); $chunks = $diffs[0]->getChunks(); - $this->assertInternalType('array', $chunks); $this->assertContainsOnlyInstancesOf(Chunk::class, $chunks); $this->assertCount(1, $chunks); @@ -102,7 +98,6 @@ public function testParseWithRemovedLines() $this->assertSame(8, $chunk->getEndRange()); $lines = $chunk->getLines(); - $this->assertInternalType('array', $lines); $this->assertContainsOnlyInstancesOf(Line::class, $lines); $this->assertCount(2, $lines); @@ -118,7 +113,7 @@ public function testParseWithRemovedLines() public function testParseDiffForMulitpleFiles() { - $content = <<parser->parse($content); $this->assertCount(2, $diffs); diff --git a/tests/Utils/UnifiedDiffAssertTrait.php b/tests/Utils/UnifiedDiffAssertTrait.php index 56093e88..8598fe96 100644 --- a/tests/Utils/UnifiedDiffAssertTrait.php +++ b/tests/Utils/UnifiedDiffAssertTrait.php @@ -27,6 +27,7 @@ public function assertValidUnifiedDiffFormat($diff) // test diff ends with a line break $last = \substr($diff, -1); + if ("\n" !== $last && "\r" !== $last) { throw new \UnexpectedValueException(\sprintf('Expected diff to end with a line break, got "%s".', $last)); } @@ -130,6 +131,7 @@ public function assertValidUnifiedDiffFormat($diff) } $previousType = $this->unifiedDiffAssertLinePrefix($lines[$lineNumber - 2], \sprintf('Preceding line of "\\ No newline at end of file" of unexpected format. Line %d.', $lineNumber)); + if (isset($endOfLineTypes[$previousType])) { throw new \UnexpectedValueException(\sprintf('Unexpected "\\ No newline at end of file", "%s" was already closed. Line %d.', $type, $lineNumber)); } @@ -190,6 +192,7 @@ private function unifiedDiffAssertLinePrefix($line, $message) private function unifiedDiffAssertStrLength($line, $min, $message) { $length = \strlen($line); + if ($length < $min) { throw new \UnexpectedValueException(\sprintf('Expected string length of minimal %d, got %d. %s', $min, $length, $message)); }