Make split platform independend

This commit is contained in:
Jaapio
2021-08-26 22:31:30 +02:00
parent c5ac781da3
commit bca4974b0b
5 changed files with 32 additions and 23 deletions
+1 -1
View File
@@ -146,7 +146,7 @@ class DescriptionFactory
*/ */
private function removeSuperfluousStartingWhitespace(string $contents): string private function removeSuperfluousStartingWhitespace(string $contents): string
{ {
$lines = explode("\n", $contents); $lines = Utils::pregSplit("/\r\n?|\n/", $contents);
// if there is only one line then we don't have lines with superfluous whitespace and // if there is only one line then we don't have lines with superfluous whitespace and
// can use the contents as-is // can use the contents as-is
@@ -79,7 +79,14 @@ DESCRIPTION;
$this->assertInstanceOf(DocBlock::class, $docblock); $this->assertInstanceOf(DocBlock::class, $docblock);
$this->assertSame('This is an example of a summary.', $summary); $this->assertSame('This is an example of a summary.', $summary);
$this->assertInstanceOf(Description::class, $description); $this->assertInstanceOf(Description::class, $description);
$this->assertSame($descriptionText, $description->render()); $this->assertSame(
str_replace(
PHP_EOL,
"\n",
$descriptionText
),
$description->render()
);
$this->assertEmpty($docblock->getTags()); $this->assertEmpty($docblock->getTags());
} }
@@ -124,6 +131,9 @@ DESCRIPTION;
include(__DIR__ . '/../../examples/playing-with-descriptions/02-escaping.php'); include(__DIR__ . '/../../examples/playing-with-descriptions/02-escaping.php');
$this->assertSame( $this->assertSame(
str_replace(
PHP_EOL,
"\n",
<<<'DESCRIPTION' <<<'DESCRIPTION'
You can escape the @-sign by surrounding it with braces, for example: @. And escape a closing brace within an You can escape the @-sign by surrounding it with braces, for example: @. And escape a closing brace within an
inline tag by adding an opening brace in front of it like this: }. inline tag by adding an opening brace in front of it like this: }.
@@ -135,7 +145,7 @@ Here are example texts where you can see how they could be used in a real life s
Do note that an {@internal inline tag that has an opening brace ({) does not break out}. Do note that an {@internal inline tag that has an opening brace ({) does not break out}.
DESCRIPTION DESCRIPTION
, ),
$foundDescription $foundDescription
); );
} }
@@ -20,6 +20,8 @@ use phpDocumentor\Reflection\DocBlock\Tags\Link as LinkTag;
use phpDocumentor\Reflection\Types\Context; use phpDocumentor\Reflection\Types\Context;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use function str_replace;
/** /**
* @coversDefaultClass \phpDocumentor\Reflection\DocBlock\DescriptionFactory * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\DescriptionFactory
* @covers ::<private> * @covers ::<private>
@@ -192,7 +194,7 @@ DESCRIPTION;
$description = $factory->create($descriptionText, new Context('')); $description = $factory->create($descriptionText, new Context(''));
$this->assertSame($expectedDescription, $description->render()); $this->assertSame(str_replace(PHP_EOL, "\n", $expectedDescription), $description->render());
} }
/** /**
+13 -6
View File
@@ -63,7 +63,7 @@ DOCCOMMENT;
] ]
); );
$this->assertSame($expected, $fixture->getDocComment($docBlock)); $this->assertSameString($expected, $fixture->getDocComment($docBlock));
} }
/** /**
@@ -98,7 +98,7 @@ DOCCOMMENT;
] ]
); );
$this->assertSame($expected, $fixture->getDocComment($docBlock)); $this->assertSameString($expected, $fixture->getDocComment($docBlock));
} }
/** /**
@@ -133,7 +133,7 @@ DOCCOMMENT;
] ]
); );
$this->assertSame($expected, $fixture->getDocComment($docBlock)); $this->assertSameString($expected, $fixture->getDocComment($docBlock));
} }
/** /**
@@ -174,7 +174,7 @@ DOCCOMMENT;
] ]
); );
$this->assertSame($expected, $fixture->getDocComment($docBlock)); $this->assertSameString($expected, $fixture->getDocComment($docBlock));
} }
/** /**
@@ -198,9 +198,16 @@ DOCCOMMENT_AFTER_REMOVE;
$genericTag = new DocBlock\Tags\Generic('unknown-tag'); $genericTag = new DocBlock\Tags\Generic('unknown-tag');
$docBlock = new DocBlock('', null, [$genericTag]); $docBlock = new DocBlock('', null, [$genericTag]);
$this->assertSame($expected, $fixture->getDocComment($docBlock)); $this->assertSameString($expected, $fixture->getDocComment($docBlock));
$docBlock->removeTag($genericTag); $docBlock->removeTag($genericTag);
$this->assertSame($expectedAfterRemove, $fixture->getDocComment($docBlock)); $this->assertSameString($expectedAfterRemove, $fixture->getDocComment($docBlock));
}
public function assertSameString(string $expected, string $actual): void
{
$expected = str_replace(PHP_EOL, "\n", $expected);
self::assertSame($expected, $actual);
} }
} }
+3 -13
View File
@@ -134,7 +134,7 @@ class DocBlockFactoryTest extends TestCase
$docblock = $fixture->create($given); $docblock = $fixture->create($given);
$this->assertSame($summary, $docblock->getSummary()); $this->assertSame($summary, $docblock->getSummary());
$this->assertEquals(new Description($description), $docblock->getDescription()); $this->assertEquals(new Description(str_replace(PHP_EOL, "\n", $description)), $docblock->getDescription());
} }
/** /**
@@ -159,12 +159,7 @@ class DocBlockFactoryTest extends TestCase
*/ */
DOCBLOCK; DOCBLOCK;
$description = <<<DESCRIPTION $description = "This is a multiline Description\nthat contains a code block.\n\n See here: a CodeBlock";
This is a multiline Description
that contains a code block.
See here: a CodeBlock
DESCRIPTION;
$docblock = $fixture->create($given); $docblock = $fixture->create($given);
@@ -180,14 +175,9 @@ DESCRIPTION;
*/ */
public function testTagsAreInterpretedUsingFactory(): void public function testTagsAreInterpretedUsingFactory(): void
{ {
$tagString = <<<TAG
@author Mike van Riel <[email protected]> This is with
multiline description.
TAG;
$tag = m::mock(Tag::class); $tag = m::mock(Tag::class);
$tagFactory = m::mock(TagFactory::class); $tagFactory = m::mock(TagFactory::class);
$tagFactory->shouldReceive('create')->with($tagString, m::type(Context::class))->andReturn($tag); $tagFactory->shouldReceive('create')->with(m::any(), m::type(Context::class))->andReturn($tag);
$fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory);