1
0
mirror of https://github.com/danog/psalm.git synced 2024-12-06 05:29:00 +01:00
psalm/tests/UnresolvableIncludeTest.php

80 lines
2.1 KiB
PHP
Raw Normal View History

2021-11-12 16:59:20 +01:00
<?php
2021-11-12 16:59:20 +01:00
namespace Psalm\Tests;
use Psalm\Context;
use Psalm\Exception\CodeException;
class UnresolvableIncludeTest extends TestCase
{
/**
* @dataProvider providerUnresolvableInclude
*/
public function testShouldThrowUnresolvableInclude(string $phpCode, int $expectedExceptionLine): void
{
$this->addFile('somefile.php', $phpCode);
$context = new Context();
$this->expectException(CodeException::class);
$this->expectExceptionMessage("UnresolvableInclude - somefile.php:$expectedExceptionLine:");
$this->analyzeFile('somefile.php', $context);
}
/**
* @return array<string,array{code:string,expectedExceptionLine:int}>
2021-11-12 16:59:20 +01:00
*/
public function providerUnresolvableInclude(): array
{
return [
'basic' => [
'code' => '<?php
2021-11-12 16:59:20 +01:00
function requireFile(string $s) : void {
require_once($s);
}
',
'expectedExceptionLine' => 3,
],
];
}
/**
* @dataProvider providerNoUnresolvableInclude
*/
public function testShouldNotThrowUnresolvableInclude(string $phpCode): void
{
$this->addFile('somefile.php', $phpCode);
$context = new Context();
$this->analyzeFile('somefile.php', $context);
}
/**
* @return array<string,array{code:string}>
2021-11-12 16:59:20 +01:00
*/
public function providerNoUnresolvableInclude(): array
{
return [
'github_issue_908_file_exists' => [
'code' => '<?php
2021-11-12 16:59:20 +01:00
function requireFile(string $s) : void {
if (file_exists($s)) {
require_once($s);
}
}
2022-12-18 17:15:15 +01:00
',
2021-11-12 16:59:20 +01:00
],
'github_issue_4788_is_file' => [
'code' => '<?php
2021-11-12 16:59:20 +01:00
function requireFile(string $s) : void {
if (is_file($s)) {
require_once($s);
}
}
2022-12-18 17:15:15 +01:00
',
2021-11-12 16:59:20 +01:00
],
];
}
}