From 43d45c2536b0da086a7296bf42477be61d19306e Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Tue, 11 Aug 2020 21:36:00 -0500 Subject: [PATCH] test: normalize line endings for tests running on Windows --- src/ConventionalCommits/Parser.php | 4 +++- .../Console/Command/PrepareCommandTest.php | 8 ++++++++ tests/ConventionalCommits/Message/BodyTest.php | 11 +++++------ tests/ConventionalCommits/ParserTest.php | 10 ++++++++++ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/ConventionalCommits/Parser.php b/src/ConventionalCommits/Parser.php index b0bb6cf..6dbc021 100644 --- a/src/ConventionalCommits/Parser.php +++ b/src/ConventionalCommits/Parser.php @@ -43,7 +43,7 @@ class Parser . "(?'type'(?P>noun))" . "(?:\((?'scope'(?P>noun))\))?(?'bc'!)?: " . "(?'desc'[[:print:]]+)" - . "(?:(?:\\n|\\r|\\r\\n){2}" + . "(?:(?:\n{2}|\r{2}|(?:\r\n){2})" . "(?'body'.*?(?=(?P>tokenPrefix)|\$))?" . "(?:(?=(?P>tokenPrefix))(?'footer'.*))?)?\$/ius"; @@ -59,6 +59,8 @@ class Parser */ public function parse(string $commitMessage): Message { + $commitMessage = trim($commitMessage); + if (!preg_match(self::COMMIT_PATTERN, $commitMessage, $matches)) { throw new InvalidCommitMessage( 'Could not find a valid Conventional Commits message', diff --git a/tests/ConventionalCommits/Console/Command/PrepareCommandTest.php b/tests/ConventionalCommits/Console/Command/PrepareCommandTest.php index e1a8ceb..aca3196 100644 --- a/tests/ConventionalCommits/Console/Command/PrepareCommandTest.php +++ b/tests/ConventionalCommits/Console/Command/PrepareCommandTest.php @@ -30,6 +30,8 @@ use Symfony\Component\Console\Output\NullOutput; use Symfony\Component\Console\Style\SymfonyStyle; +use const PHP_EOL; + class PrepareCommandTest extends RamseyTestCase { public function testCommandName(): void @@ -61,6 +63,9 @@ public function testRun(): void EOD; + // Fix line endings in case running tests on Windows. + $expectedMessage = preg_replace('/(?getRawBodyForTest(); - - // Replace line feeds with PHP_EOL, in case tests run on platforms with - // different line endings. - return str_replace("\n", PHP_EOL, $body); + return $this->getRawBodyForTest(); } /** @@ -33,7 +29,7 @@ public function getExpectedBody(): string */ public function getRawBodyForTest(): string { - return <<<'EOD' + $body = <<<'EOD' Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce pharetra quis massa ut elementum. Pellentesque dapibus ultricies pharetra. In in finibus massa. Donec cursus nec ligula nec eleifend. Ut eleifend ut nisl sit amet laoreet. Mauris tristique nibh urna, vestibulum dictum ante tincidunt a. Curabitur ultricies dignissim neque eget rutrum. Maecenas nulla diam, dictum et pellentesque tristique, vestibulum ut dolor. Nam ac lobortis turpis. Nulla faucibus eu ex tempus tempus. Mauris tincidunt pellentesque velit quis ullamcorper. Nam massa mauris, porta vel varius id, sollicitudin vitae dolor. Aliquam at mi sem. Sed rhoncus urna sapien, vel vehicula urna sagittis eget. ``` php @@ -45,5 +41,8 @@ function loremIpsum(string $ipsum): string Morbi tincidunt pulvinar sem. https://example.com/this-is-a-really-long-url-that-should-not-break-across-lines-when-wrapping In posuere eros et venenatis mattis. Nullam tincidunt vehicula ullamcorper. Vivamus posuere eros eget condimentum posuere. Sed vel magna quis neque facilisis aliquet eu sed nisi. Nam nec arcu mi. Fusce laoreet mi sed mi egestas, sed dignissim nibh ultricies. Maecenas viverra tellus eros, nec ullamcorper magna cursus quis. In a nulla et nisi sagittis vehicula. EOD; + + // Fix line endings in case running tests on Windows. + return (string) preg_replace('/(?parse($rawMessage); @@ -87,6 +93,10 @@ public function provideInvalidCommitMessage(): array public function testInvalidCommitMessageThrowsException(string $invalidMessageFile): void { $invalidMessage = (string) file_get_contents($invalidMessageFile); + + // Fix line endings in case running tests on Windows. + $invalidMessage = (string) preg_replace('/(?expectException(InvalidCommitMessage::class);