1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-26 20:34:47 +01:00
psalm/tests/BadFormatTest.php
2022-12-18 13:20:31 -06:00

110 lines
2.9 KiB
PHP

<?php
namespace Psalm\Tests;
use Psalm\Context;
use Psalm\Exception\CodeException;
class BadFormatTest extends TestCase
{
public function testMissingSemicolon(): void
{
$this->expectExceptionMessage('ParseError - somefile.php:9');
$this->expectException(CodeException::class);
$this->addFile(
'somefile.php',
'<?php
class A {
/** @var int|null */
protected $hello;
/** @return void */
function foo() {
$this->hello = 5
}
}',
);
$this->analyzeFile('somefile.php', new Context());
}
public function testClassMethodWithNoStmts(): void
{
$this->expectExceptionMessage('ParseError - somefile.php:3');
$this->expectException(CodeException::class);
$this->addFile(
'somefile.php',
'<?php
class A {
public function foo() : void;
}',
);
$this->analyzeFile('somefile.php', new Context());
}
public function testInterfaceWithProperties(): void
{
$this->expectExceptionMessage('ParseError - somefile.php:3');
$this->expectException(CodeException::class);
$this->addFile(
'somefile.php',
'<?php
interface foo {
public static $foo = ["bar"];
}',
);
$this->analyzeFile('somefile.php', new Context());
}
public function testTypingReturnType(): void
{
$this->expectExceptionMessage('ParseError - somefile.php:5');
$this->expectException(CodeException::class);
$this->addFile(
'somefile.php',
'<?php
class A {
/** @return void */
protected function _getCollaborators(User $user, User $cur_user = null) :
{
return $a;
}
}',
);
$this->analyzeFile('somefile.php', new Context());
}
public function testOverriddenUse(): void
{
$this->expectExceptionMessage('ParseError - somefile.php:6');
$this->expectException(CodeException::class);
$this->addFile(
'somefile.php',
'<?php
namespace Demo;
use A\B;
interface B {}',
);
$this->analyzeFile('somefile.php', new Context());
}
public function testBadArray(): void
{
$this->expectExceptionMessage('ParseError - somefile.php:2');
$this->expectException(CodeException::class);
$this->addFile(
'somefile.php',
'<?php
[1,,2];',
);
$this->analyzeFile('somefile.php', new Context());
}
}