Test existence of registered arguments set referenced in expectedReturnValues/expectedArguments
This commit is contained in:
parent
91358c9e6d
commit
f79466e058
|
@ -196,7 +196,7 @@ namespace PHPSTORM_META {
|
|||
|
||||
expectedArguments(\FilesystemIterator::setFlags(), 0, \FilesystemIterator::CURRENT_MODE_MASK,\FilesystemIterator::CURRENT_AS_PATHNAME,\FilesystemIterator::CURRENT_AS_FILEINFO,\FilesystemIterator::CURRENT_AS_SELF,\FilesystemIterator::KEY_MODE_MASK,\FilesystemIterator::KEY_AS_PATHNAME,\FilesystemIterator::FOLLOW_SYMLINKS,\FilesystemIterator::KEY_AS_FILENAME,\FilesystemIterator::NEW_CURRENT_AND_KEY,\FilesystemIterator::SKIP_DOTS,\FilesystemIterator::UNIX_PATHS,\FilesystemIterator::OTHER_MODE_MASK);
|
||||
|
||||
egisterArgumentsSet("splFileObjectFlags", \SplFileObject::DROP_NEW_LINE|\SplFileObject::READ_AHEAD|\SplFileObject::SKIP_EMPTY|\SplFileObject::READ_CSV);
|
||||
registerArgumentsSet("splFileObjectFlags", \SplFileObject::DROP_NEW_LINE|\SplFileObject::READ_AHEAD|\SplFileObject::SKIP_EMPTY|\SplFileObject::READ_CSV);
|
||||
expectedArguments(\SplFileObject::setFlags(), 0, argumentsSet("splFileObjectFlags"));
|
||||
expectedArguments(\SplDoublyLinkedList::setIteratorMode(), 0, \SplDoublyLinkedList::IT_MODE_LIFO|\SplDoublyLinkedList::IT_MODE_FIFO|\SplDoublyLinkedList::IT_MODE_DELETE|\SplDoublyLinkedList::IT_MODE_KEEP);
|
||||
expectedArguments(\SplQueue::setIteratorMode(), 0, \SplDoublyLinkedList::IT_MODE_LIFO|\SplDoublyLinkedList::IT_MODE_FIFO|\SplDoublyLinkedList::IT_MODE_DELETE|\SplDoublyLinkedList::IT_MODE_KEEP);
|
||||
|
|
|
@ -20,10 +20,18 @@ class MetaExpectedArgumentsCollector extends NodeVisitorAbstract
|
|||
* @var ExpectedFunctionArgumentsInfo[]
|
||||
*/
|
||||
private $expectedArgumentsInfos;
|
||||
/**
|
||||
* @var String[]
|
||||
*/
|
||||
private $registeredArgumentsSet;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->expectedArgumentsInfos = array();
|
||||
$this->registeredArgumentsSet = array();
|
||||
StubParser::processStubs($this, function (SplFileInfo $file) {
|
||||
return $file->getFilename() === '.phpstorm.meta.php';
|
||||
});
|
||||
}
|
||||
|
||||
public function enterNode(Node $node)
|
||||
|
@ -37,6 +45,8 @@ class MetaExpectedArgumentsCollector extends NodeVisitorAbstract
|
|||
$args = $node->args;
|
||||
if (count($args) < 2) throw new RuntimeException('Expected at least 2 arguments for registerArgumentsSet call');
|
||||
$this->expectedArgumentsInfos[] = $this->getExpectedArgumentsInfo(null, array_slice($args, 1));
|
||||
$name = $args[0]->value->value;
|
||||
$this->registeredArgumentsSet[$name] = $name;
|
||||
} else if ((string)$node->name === self::EXPECTED_RETURN_VALUES) {
|
||||
$args = $node->args;
|
||||
if (count($args) < 2) throw new RuntimeException('Expected at least 2 arguments for expectedReturnValues call');
|
||||
|
@ -53,6 +63,14 @@ class MetaExpectedArgumentsCollector extends NodeVisitorAbstract
|
|||
return $this->expectedArgumentsInfos;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return String[]
|
||||
*/
|
||||
public function getRegisteredArgumentsSet(): array
|
||||
{
|
||||
return $this->registeredArgumentsSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Expr[] $expressions
|
||||
* @return Expr[]
|
||||
|
@ -71,18 +89,6 @@ class MetaExpectedArgumentsCollector extends NodeVisitorAbstract
|
|||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ExpectedFunctionArgumentsInfo[]
|
||||
*/
|
||||
public static function getMetaExpectedArguments(): array
|
||||
{
|
||||
$visitor = new MetaExpectedArgumentsCollector();
|
||||
StubParser::processStubs($visitor, function (SplFileInfo $file) {
|
||||
return $file->getFilename() === '.phpstorm.meta.php';
|
||||
});
|
||||
return $visitor->getExpectedArgumentsInfos();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Expr|null $functionReference
|
||||
* @param $args
|
||||
|
|
|
@ -20,13 +20,19 @@ class StubsMetaExpectedArgumentsTest extends TestCase
|
|||
* @var ExpectedFunctionArgumentsInfo[]
|
||||
*/
|
||||
private static $expectedArguments;
|
||||
/**
|
||||
* @var String[]
|
||||
*/
|
||||
private static $registeredArgumentsSet;
|
||||
private static $functionsFqns;
|
||||
private static $methodsFqns;
|
||||
private static $constantsFqns;
|
||||
|
||||
public static function setUpBeforeClass()
|
||||
{
|
||||
self::$expectedArguments = MetaExpectedArgumentsCollector::getMetaExpectedArguments();
|
||||
$argumentsCollector = new MetaExpectedArgumentsCollector();
|
||||
self::$expectedArguments = $argumentsCollector->getExpectedArgumentsInfos();
|
||||
self::$registeredArgumentsSet = $argumentsCollector->getRegisteredArgumentsSet();
|
||||
$stubs = PhpStormStubsSingleton::getPhpStormStubs();
|
||||
self::$functionsFqns = array_map(function (Model\PHPFunction $func) {
|
||||
return self::toPresentableFqn((string)$func->name);
|
||||
|
@ -104,6 +110,21 @@ class StubsMetaExpectedArgumentsTest extends TestCase
|
|||
}
|
||||
}
|
||||
|
||||
public function testRegisteredArgumentsSetExists()
|
||||
{
|
||||
foreach (self::$expectedArguments as $argument) {
|
||||
foreach ($argument->getExpectedArguments() as $argumentsSet) {
|
||||
if ($argumentsSet instanceof FuncCall && ((string)$argumentsSet->name) === 'argumentsSet') {
|
||||
$args = $argumentsSet->args;
|
||||
self::assertGreaterThanOrEqual(1, count($args), 'argumentsSet call should provide set name');
|
||||
$name = $args[0]->value->value;
|
||||
self::assertArrayHasKey($name, self::$registeredArgumentsSet, 'Can\'t find registered argument set: ' . $name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function testStringLiteralsSingleQuoted()
|
||||
{
|
||||
foreach (self::$expectedArguments as $argument) {
|
||||
|
|
Loading…
Reference in New Issue