Skip to content

Commit c453f29

Browse files
committed
RuleErrorBuilder::file() - file path needs to exist
1 parent d4ee76c commit c453f29

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/Rules/RuleErrorBuilder.php

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use function class_exists;
99
use function count;
1010
use function implode;
11+
use function is_file;
1112
use function sprintf;
1213

1314
/**
@@ -143,6 +144,9 @@ public function line(int $line): self
143144
*/
144145
public function file(string $file, ?string $fileDescription = null): self
145146
{
147+
if (!is_file($file)) {
148+
throw new ShouldNotHappenException(sprintf('File %s does not exist.', $file));
149+
}
146150
$this->properties['file'] = $file;
147151
$this->properties['fileDescription'] = $fileDescription ?? $file;
148152
$this->type |= self::TYPE_FILE;

tests/PHPStan/Rules/RuleErrorBuilderTest.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,24 @@ public function testMessageAndLineAndBuild(): void
2626

2727
public function testMessageAndFileAndBuild(): void
2828
{
29-
$builder = RuleErrorBuilder::message('Foo')->file('Bar.php');
29+
$builder = RuleErrorBuilder::message('Foo')->file(__FILE__);
3030
$ruleError = $builder->build();
3131
$this->assertSame('Foo', $ruleError->getMessage());
3232

3333
$this->assertInstanceOf(FileRuleError::class, $ruleError); // @phpstan-ignore method.alreadyNarrowedType
34-
$this->assertSame('Bar.php', $ruleError->getFile());
34+
$this->assertSame(__FILE__, $ruleError->getFile());
3535
}
3636

3737
public function testMessageAndLineAndFileAndBuild(): void
3838
{
39-
$builder = RuleErrorBuilder::message('Foo')->line(25)->file('Bar.php');
39+
$builder = RuleErrorBuilder::message('Foo')->line(25)->file(__FILE__);
4040
$ruleError = $builder->build();
4141
$this->assertSame('Foo', $ruleError->getMessage());
4242

4343
$this->assertInstanceOf(LineRuleError::class, $ruleError); // @phpstan-ignore method.alreadyNarrowedType
4444
$this->assertInstanceOf(FileRuleError::class, $ruleError); // @phpstan-ignore method.alreadyNarrowedType
4545
$this->assertSame(25, $ruleError->getLine());
46-
$this->assertSame('Bar.php', $ruleError->getFile());
46+
$this->assertSame(__FILE__, $ruleError->getFile());
4747
}
4848

4949
}

0 commit comments

Comments
 (0)