mirror of
https://github.com/danog/psalm.git
synced 2024-11-26 20:34:47 +01:00
Add tests
This commit is contained in:
parent
b71005e199
commit
47d8da6135
@ -388,4 +388,108 @@ class ThrowsAnnotationTest extends TestCase
|
|||||||
|
|
||||||
$this->analyzeFile('somefile.php', $context);
|
$this->analyzeFile('somefile.php', $context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Psalm\Exception\CodeException
|
||||||
|
* @expectedExceptionMessage UncaughtThrowInGlobalScope
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testUncaughtDocumentedThrowCallInGlobalScope()
|
||||||
|
{
|
||||||
|
Config::getInstance()->check_for_throws_in_global_scope = true;
|
||||||
|
|
||||||
|
$this->addFile(
|
||||||
|
'somefile.php',
|
||||||
|
'<?php
|
||||||
|
/**
|
||||||
|
* @throws RangeException
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
function foo(int $x, int $y) : int {
|
||||||
|
if ($y === 0) {
|
||||||
|
throw new \RangeException("Cannot divide by zero");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($y < 0) {
|
||||||
|
throw new \InvalidArgumentException("This is also bad");
|
||||||
|
}
|
||||||
|
|
||||||
|
return intdiv($x, $y);
|
||||||
|
}
|
||||||
|
|
||||||
|
foo(0, 0);'
|
||||||
|
);
|
||||||
|
|
||||||
|
$context = new Context();
|
||||||
|
|
||||||
|
$this->analyzeFile('somefile.php', $context);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testCaughtDocumentedThrowCallInGlobalScope()
|
||||||
|
{
|
||||||
|
Config::getInstance()->check_for_throws_docblock = true;
|
||||||
|
Config::getInstance()->check_for_throws_in_global_scope = true;
|
||||||
|
|
||||||
|
$this->addFile(
|
||||||
|
'somefile.php',
|
||||||
|
'<?php
|
||||||
|
/**
|
||||||
|
* @throws RangeException
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
*/
|
||||||
|
function foo(int $x, int $y) : int {
|
||||||
|
if ($y === 0) {
|
||||||
|
throw new \RangeException("Cannot divide by zero");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($y < 0) {
|
||||||
|
throw new \InvalidArgumentException("This is also bad");
|
||||||
|
}
|
||||||
|
|
||||||
|
return intdiv($x, $y);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
foo(0, 0);
|
||||||
|
} catch (Exception $e) {}'
|
||||||
|
);
|
||||||
|
|
||||||
|
$context = new Context();
|
||||||
|
|
||||||
|
$this->analyzeFile('somefile.php', $context);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testUncaughtUndocumentedThrowCallInGlobalScope()
|
||||||
|
{
|
||||||
|
Config::getInstance()->check_for_throws_in_global_scope = true;
|
||||||
|
|
||||||
|
$this->addFile(
|
||||||
|
'somefile.php',
|
||||||
|
'<?php
|
||||||
|
function foo(int $x, int $y) : int {
|
||||||
|
if ($y === 0) {
|
||||||
|
throw new \RangeException("Cannot divide by zero");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($y < 0) {
|
||||||
|
throw new \InvalidArgumentException("This is also bad");
|
||||||
|
}
|
||||||
|
|
||||||
|
return intdiv($x, $y);
|
||||||
|
}
|
||||||
|
|
||||||
|
foo(0, 0);'
|
||||||
|
);
|
||||||
|
|
||||||
|
$context = new Context();
|
||||||
|
|
||||||
|
$this->analyzeFile('somefile.php', $context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Psalm\Tests;
|
namespace Psalm\Tests;
|
||||||
|
|
||||||
|
use Psalm\Config;
|
||||||
|
use Psalm\Context;
|
||||||
|
|
||||||
class TryCatchTest extends TestCase
|
class TryCatchTest extends TestCase
|
||||||
{
|
{
|
||||||
use Traits\ValidCodeAnalysisTestTrait;
|
use Traits\ValidCodeAnalysisTestTrait;
|
||||||
@ -274,4 +277,45 @@ class TryCatchTest extends TestCase
|
|||||||
],
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Psalm\Exception\CodeException
|
||||||
|
* @expectedExceptionMessage UncaughtThrowInGlobalScope
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testUncaughtThrowInGlobalScope()
|
||||||
|
{
|
||||||
|
Config::getInstance()->check_for_throws_in_global_scope = true;
|
||||||
|
|
||||||
|
$this->addFile(
|
||||||
|
'somefile.php',
|
||||||
|
'<?php
|
||||||
|
throw new \Exception();'
|
||||||
|
);
|
||||||
|
|
||||||
|
$context = new Context();
|
||||||
|
|
||||||
|
$this->analyzeFile('somefile.php', $context);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testCaughtThrowInGlobalScope()
|
||||||
|
{
|
||||||
|
Config::getInstance()->check_for_throws_in_global_scope = true;
|
||||||
|
|
||||||
|
$this->addFile(
|
||||||
|
'somefile.php',
|
||||||
|
'<?php
|
||||||
|
try {
|
||||||
|
throw new \Exception();
|
||||||
|
} catch (\Exception $e) {}'
|
||||||
|
);
|
||||||
|
|
||||||
|
$context = new Context();
|
||||||
|
|
||||||
|
$this->analyzeFile('somefile.php', $context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user