Skip to content

Commit 4bb82b6

Browse files
committed
Add some more tests around exception messages
1 parent 2b169a0 commit 4bb82b6

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

php/tests/unit/ParserException/CompositeParserExceptionTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,26 @@
44

55
namespace Cucumber\Gherkin\ParserException;
66

7+
use Cucumber\Gherkin\Location;
78
use Cucumber\Gherkin\ParserException;
89
use PHPUnit\Framework\TestCase;
910

1011
final class CompositeParserExceptionTest extends TestCase
1112
{
13+
public function testMessageContainsAHeaderAndALineForEachException(): void
14+
{
15+
$compositeParserException = new CompositeParserException([
16+
new class ('Message 1', null) extends ParserException {},
17+
new class ('Message 2', null) extends ParserException {},
18+
]);
19+
20+
$message = $compositeParserException->getMessage();
21+
22+
self::assertStringStartsWith("(-1:-1): Parser errors:\n", $message);
23+
self::assertCount(3, explode("\n", $message));
24+
}
25+
26+
1227
public function testMessageContainsAllTheChildMessages(): void
1328
{
1429
$compositeParserException = new CompositeParserException([
@@ -21,4 +36,17 @@ public function testMessageContainsAllTheChildMessages(): void
2136
self::assertStringContainsString('Message 1', $message);
2237
self::assertStringContainsString('Message 2', $message);
2338
}
39+
40+
public function testMessageContainsAllTheChildLocations(): void
41+
{
42+
$compositeParserException = new CompositeParserException([
43+
new class ('', new Location(100, 200)) extends ParserException {},
44+
new class ('', new Location(300, 400)) extends ParserException {},
45+
]);
46+
47+
$message = $compositeParserException->getMessage();
48+
49+
self::assertStringContainsString('(100:200)', $message);
50+
self::assertStringContainsString('(300:400)', $message);
51+
}
2452
}

php/tests/unit/ParserException/UnexpectedTokenExceptionTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111

1212
final class UnexpectedTokenExceptionTest extends TestCase
1313
{
14-
public function testMessageSpecifiesWhichTokenWasUnexpected(): void
14+
public function testMessageSpecifiesAndTrimsWhichTokenWasUnexpected(): void
1515
{
1616
$line = $this->createMock(GherkinLine::class);
17-
$line->method('getLineText')->willReturn('Baz');
17+
$line->method('getLineText')->willReturn(' Baz ');
1818

1919
$exception = new UnexpectedTokenException(
2020
new Token($line, new Location(10, 10)),

0 commit comments

Comments
 (0)