Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support to PHP-Parser 5.0 #133

Merged
merged 3 commits into from
Feb 22, 2024

Conversation

llaville
Copy link
Contributor

All Submissions:

New Feature Submissions:

  1. Does your submission pass tests?
  2. Have you lint your code locally prior to submission?

Hello,

With this new PR, I want to add support to newest major version 5 of PHP-Parser, but of course keep compatibility with previous v4.

This is possible when you read official documentation

The createForNewestSupportedVersion() and creatForHostVersion() are available since PHP-Parser 4.18.0,
to allow libraries to support PHP-Parser 4 and 5 at the same time more easily.

So composer.json constraint is upgraded from min 4.17 to 4.18

To test locally compatibility, I've a repo where I've put a little CLI application to test use cases.

TL;DR; spatie/fork#54 to see the changes I've applied on spatie/fork project.

Locally I update manually nikic/php-parser dependency to get :

  1. First : a 4.18.0 version
composer bin symbol-parser update --prefer-lowest --prefer-stable nikic/php-parser
[bamarni-bin] Checking namespace vendor-bin/symbol-parser
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 1 update, 0 removals
  - Downgrading nikic/php-parser (v5.0.0 => v4.18.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Downgrading nikic/php-parser (v5.0.0 => v4.18.0): Extracting archive
Generating autoload files
3 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
  1. Second : a 5.0.0 version
composer bin symbol-parser update --prefer-stable nikic/php-parser
[bamarni-bin] Checking namespace vendor-bin/symbol-parser
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 1 update, 0 removals
  - Upgrading nikic/php-parser (v4.18.0 => v5.0.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Upgrading nikic/php-parser (v4.18.0 => v5.0.0): Extracting archive
Generating autoload files
3 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.

Here are results I get from my sandbox project

Resource scripts are available at :

Use Case 1 : `play:fork:symbol-parser:uc1` output
Running: 'p:f:s:uc1' with /shared/backups/bartlett/sandbox/src/fork/use_case_1.php resource.

Begin line >>>
Task 0 : Symbol/Provider/Factory/FileSymbolProviderFactory.php
Task 1 : Symbol/Provider/FileSymbolProvider.php
Task 2 : Symbol/Provider/FileIterationInterface.php
Task 3 : Symbol/NamespaceSymbol.php
Task 4 : Symbol/Loader/ExtensionSymbolLoader.php
Task 5 : Symbol/Loader/SymbolLoaderInterface.php
Task 6 : Symbol/Loader/PsrSymbolLoader.php
Task 7 : Symbol/Loader/CompositeSymbolLoader.php
Task 8 : Symbol/Loader/FileSymbolLoader.php
Task 9 : Symbol/SymbolName.php
Task 10 : Symbol/SymbolInterface.php
Task 11 : Symbol/Symbol.php
Task 12 : Symbol/SymbolListInterface.php
Task 13 : Symbol/SymbolList.php
Task 14 : Parser/PHP/SymbolNameParserInterface.php
Task 15 : Parser/PHP/DefinedSymbolCollector.php
Task 16 : Parser/PHP/SymbolNameParser.php
Task 17 : Parser/PHP/Strategy/ExtendsParseStrategy.php
Task 18 : Parser/PHP/Strategy/StrategyInterface.php
Task 19 : Parser/PHP/Strategy/UsedExtensionSymbolStrategy.php
Task 20 : Parser/PHP/Strategy/ConstStrategy.php
Task 21 : Parser/PHP/Strategy/AnnotationStrategy.php
Task 22 : Parser/PHP/Strategy/UseStrategy.php
Task 23 : Parser/PHP/Strategy/NewStrategy.php
Task 24 : Parser/PHP/Strategy/ClassConstStrategy.php
Task 25 : Parser/PHP/Strategy/InstanceofStrategy.php
Task 26 : Parser/PHP/Strategy/TypedAttributeStrategy.php
Task 27 : Parser/PHP/Strategy/StaticStrategy.php
Task 28 : Parser/PHP/Strategy/PhpExtensionStrategy.php
Task 29 : Parser/PHP/Strategy/ImplementsParseStrategy.php
Task 30 : Parser/PHP/Strategy/FullQualifiedParameterStrategy.php
Task 31 : Parser/PHP/Strategy/FunctionInvocationStrategy.php
Task 32 : Parser/PHP/SymbolCollectorInterface.php
Task 33 : Parser/PHP/FileInclude.php
Task 34 : Parser/PHP/ConsumedSymbolCollector.php
Task 35 : Parser/PHP/AbstractCollector.php
Task 36 : Parser/PHP/AutoloadType.php
Task 37 : Exception/IOException.php
Task 38 : File/FileContentProvider.php
Extension symbols found on file Symbol/Provider/Factory/FileSymbolProviderFactory.php : (0)
array (
)
Extension symbols found on file Symbol/Provider/FileSymbolProvider.php : (3)
array (
  0 => 'AppendIterator',
  1 => 'Generator',
  2 => 'Iterator',
)
Extension symbols found on file Symbol/Provider/FileIterationInterface.php : (2)
array (
  0 => 'Iterator',
  1 => 'SplFileInfo',
)
Extension symbols found on file Symbol/NamespaceSymbol.php : (3)
array (
  0 => 'implode',
  1 => 'explode',
  2 => 'strpos',
)
Extension symbols found on file Symbol/Loader/ExtensionSymbolLoader.php : (9)
array (
  0 => 'Generator',
  1 => 'ReflectionException',
  2 => 'ReflectionExtension',
  3 => 'str_replace',
  4 => 'array_merge',
  5 => 'array_flip',
  6 => 'array_map',
  7 => 'array_keys',
  8 => 'strpos',
)
Extension symbols found on file Symbol/Loader/SymbolLoaderInterface.php : (1)
array (
  0 => 'Generator',
)
Extension symbols found on file Symbol/Loader/PsrSymbolLoader.php : (3)
array (
  0 => 'Generator',
  1 => 'array_merge',
  2 => 'array_keys',
)
Extension symbols found on file Symbol/Loader/CompositeSymbolLoader.php : (1)
array (
  0 => 'Generator',
)
Extension symbols found on file Symbol/Loader/FileSymbolLoader.php : (13)
array (
  0 => 'Generator',
  1 => 'array_merge',
  2 => 'array_filter',
  3 => 'array_map',
  4 => 'DIRECTORY_SEPARATOR',
  5 => 'preg_match',
  6 => 'is_array',
  7 => 'is_dir',
  8 => 'glob',
  9 => 'defined',
  10 => 'GLOB_BRACE',
  11 => 'GLOB_ONLYDIR',
  12 => 'GLOB_NOSORT',
)
Extension symbols found on file Symbol/SymbolName.php : (4)
array (
  0 => 'ltrim',
  1 => 'explode',
  2 => 'array_pop',
  3 => 'implode',
)
Extension symbols found on file Symbol/SymbolInterface.php : (0)
array (
)
Extension symbols found on file Symbol/Symbol.php : (0)
array (
)
Extension symbols found on file Symbol/SymbolListInterface.php : (2)
array (
  0 => 'IteratorAggregate',
  1 => 'Traversable',
)
Extension symbols found on file Symbol/SymbolList.php : (4)
array (
  0 => 'Generator',
  1 => 'Traversable',
  2 => 'array_merge',
  3 => 'iterator_to_array',
)
Extension symbols found on file Parser/PHP/SymbolNameParserInterface.php : (2)
array (
  0 => 'Generator',
  1 => 'SplFileInfo',
)
Extension symbols found on file Parser/PHP/DefinedSymbolCollector.php : (2)
array (
  0 => 'assert',
  1 => 'array_merge',
)
Extension symbols found on file Parser/PHP/SymbolNameParser.php : (5)
array (
  0 => 'ArrayIterator',
  1 => 'Closure',
  2 => 'Generator',
  3 => 'SplFileInfo',
  4 => 'ltrim',
)
Extension symbols found on file Parser/PHP/Strategy/ExtendsParseStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/StrategyInterface.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/ConstStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/NewStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/ClassConstStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/UseStrategy.php : (1)
array (
  0 => 'array_map',
)
Extension symbols found on file Parser/PHP/Strategy/StaticStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/UsedExtensionSymbolStrategy.php : (6)
array (
  0 => 'ReflectionException',
  1 => 'ReflectionExtension',
  2 => 'ReflectionFunction',
  3 => 'array_flip',
  4 => 'array_key_exists',
  5 => 'implode',
)
Extension symbols found on file Parser/PHP/Strategy/ImplementsParseStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/InstanceofStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/TypedAttributeStrategy.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/FullQualifiedParameterStrategy.php : (3)
array (
  0 => 'count',
  1 => 'array_filter',
  2 => 'array_map',
)
Extension symbols found on file Parser/PHP/Strategy/FunctionInvocationStrategy.php : (1)
array (
  0 => 'assert',
)
Extension symbols found on file Parser/PHP/AutoloadType.php : (0)
array (
)
Extension symbols found on file Parser/PHP/Strategy/AnnotationStrategy.php : (9)
array (
  0 => 'RecursiveIteratorIterator',
  1 => 'RecursiveArrayIterator',
  2 => 'array_filter',
  3 => 'array_map',
  4 => 'ltrim',
  5 => 'get_class',
  6 => 'array_merge',
  7 => 'property_exists',
  8 => 'iterator_to_array',
)
Extension symbols found on file Parser/PHP/Strategy/PhpExtensionStrategy.php : (8)
array (
  0 => 'ReflectionException',
  1 => 'ReflectionExtension',
  2 => 'ReflectionFunction',
  3 => 'array_flip',
  4 => 'array_key_exists',
  5 => 'str_replace',
  6 => 'strtolower',
  7 => 'implode',
)
Extension symbols found on file Parser/PHP/SymbolCollectorInterface.php : (1)
array (
  0 => 'Closure',
)
Extension symbols found on file Parser/PHP/FileInclude.php : (1)
array (
  0 => 'property_exists',
)
Extension symbols found on file Parser/PHP/ConsumedSymbolCollector.php : (5)
array (
  0 => 'count',
  1 => 'array_merge',
  2 => 'array_map',
  3 => 'array_unique',
  4 => 'array_keys',
)
Extension symbols found on file Exception/IOException.php : (1)
array (
  0 => 'RuntimeException',
)
Extension symbols found on file Parser/PHP/AbstractCollector.php : (2)
array (
  0 => 'Closure',
  1 => 'get_class',
)
Extension symbols found on file File/FileContentProvider.php : (3)
array (
  0 => 'SplFileInfo',
  1 => 'file_exists',
  2 => 'file_get_contents',
)
End line <<<

Time: 362 ms, Memory: 8.00Mb
Use Case 2 : `play:fork:symbol-parser:uc2` output
Running: 'p:f:s:uc2' with /shared/backups/bartlett/sandbox/src/fork/use_case_2.php resource.

Begin line >>>
Task 0 : Symbol/Provider/Factory/FileSymbolProviderFactory.php
Task 1 : Symbol/Provider/FileSymbolProvider.php
Task 2 : Symbol/Provider/FileIterationInterface.php
Task 3 : Symbol/NamespaceSymbol.php
Task 4 : Symbol/Loader/ExtensionSymbolLoader.php
Task 5 : Symbol/Loader/SymbolLoaderInterface.php
Task 6 : Symbol/Loader/PsrSymbolLoader.php
Task 7 : Symbol/Loader/CompositeSymbolLoader.php
Task 8 : Symbol/Loader/FileSymbolLoader.php
Task 9 : Symbol/SymbolName.php
Task 10 : Symbol/SymbolInterface.php
Task 11 : Symbol/Symbol.php
Task 12 : Symbol/SymbolListInterface.php
Task 13 : Symbol/SymbolList.php
Task 14 : Parser/PHP/SymbolNameParserInterface.php
Task 15 : Parser/PHP/DefinedSymbolCollector.php
Task 16 : Parser/PHP/SymbolNameParser.php
Task 17 : Parser/PHP/Strategy/ExtendsParseStrategy.php
Task 18 : Parser/PHP/Strategy/StrategyInterface.php
Task 19 : Parser/PHP/Strategy/UsedExtensionSymbolStrategy.php
Task 20 : Parser/PHP/Strategy/ConstStrategy.php
Task 21 : Parser/PHP/Strategy/AnnotationStrategy.php
Task 22 : Parser/PHP/Strategy/UseStrategy.php
Task 23 : Parser/PHP/Strategy/NewStrategy.php
Task 24 : Parser/PHP/Strategy/ClassConstStrategy.php
Task 25 : Parser/PHP/Strategy/InstanceofStrategy.php
Task 26 : Parser/PHP/Strategy/TypedAttributeStrategy.php
Task 27 : Parser/PHP/Strategy/StaticStrategy.php
Task 28 : Parser/PHP/Strategy/PhpExtensionStrategy.php
Task 29 : Parser/PHP/Strategy/ImplementsParseStrategy.php
Task 30 : Parser/PHP/Strategy/FullQualifiedParameterStrategy.php
Task 31 : Parser/PHP/Strategy/FunctionInvocationStrategy.php
Task 32 : Parser/PHP/SymbolCollectorInterface.php
Task 33 : Parser/PHP/FileInclude.php
Task 34 : Parser/PHP/ConsumedSymbolCollector.php
Task 35 : Parser/PHP/AbstractCollector.php
Task 36 : Parser/PHP/AutoloadType.php
Task 37 : Exception/IOException.php
Task 38 : File/FileContentProvider.php
Function invocations found on file Symbol/Provider/Factory/FileSymbolProviderFactory.php : (0)
array (
)
Function invocations found on file Symbol/Provider/FileSymbolProvider.php : (0)
array (
)
Function invocations found on file Symbol/Provider/FileIterationInterface.php : (0)
array (
)
Function invocations found on file Symbol/NamespaceSymbol.php : (3)
array (
  0 => 'implode',
  1 => 'explode',
  2 => 'strpos',
)
Function invocations found on file Symbol/Loader/ExtensionSymbolLoader.php : (6)
array (
  0 => 'str_replace',
  1 => 'array_merge',
  2 => 'array_flip',
  3 => 'array_map',
  4 => 'array_keys',
  5 => 'strpos',
)
Function invocations found on file Symbol/Loader/SymbolLoaderInterface.php : (0)
array (
)
Function invocations found on file Symbol/Loader/PsrSymbolLoader.php : (2)
array (
  0 => 'array_merge',
  1 => 'array_keys',
)
Function invocations found on file Symbol/Loader/CompositeSymbolLoader.php : (0)
array (
)
Function invocations found on file Symbol/Loader/FileSymbolLoader.php : (8)
array (
  0 => 'array_merge',
  1 => 'array_filter',
  2 => 'array_map',
  3 => 'preg_match',
  4 => 'is_array',
  5 => 'is_dir',
  6 => 'glob',
  7 => 'defined',
)
Function invocations found on file Symbol/SymbolName.php : (4)
array (
  0 => 'ltrim',
  1 => 'explode',
  2 => 'array_pop',
  3 => 'implode',
)
Function invocations found on file Symbol/SymbolInterface.php : (0)
array (
)
Function invocations found on file Symbol/Symbol.php : (0)
array (
)
Function invocations found on file Symbol/SymbolListInterface.php : (0)
array (
)
Function invocations found on file Symbol/SymbolList.php : (2)
array (
  0 => 'array_merge',
  1 => 'iterator_to_array',
)
Function invocations found on file Parser/PHP/SymbolNameParserInterface.php : (0)
array (
)
Function invocations found on file Parser/PHP/DefinedSymbolCollector.php : (2)
array (
  0 => 'assert',
  1 => 'array_merge',
)
Function invocations found on file Parser/PHP/SymbolNameParser.php : (1)
array (
  0 => 'ltrim',
)
Function invocations found on file Parser/PHP/Strategy/ExtendsParseStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/StrategyInterface.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/UsedExtensionSymbolStrategy.php : (3)
array (
  0 => 'array_flip',
  1 => 'array_key_exists',
  2 => 'implode',
)
Function invocations found on file Parser/PHP/Strategy/ConstStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/NewStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/ClassConstStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/StaticStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/UseStrategy.php : (1)
array (
  0 => 'array_map',
)
Function invocations found on file Parser/PHP/Strategy/InstanceofStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/ImplementsParseStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/TypedAttributeStrategy.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/PhpExtensionStrategy.php : (5)
array (
  0 => 'array_flip',
  1 => 'array_key_exists',
  2 => 'str_replace',
  3 => 'strtolower',
  4 => 'implode',
)
Function invocations found on file Parser/PHP/Strategy/FullQualifiedParameterStrategy.php : (3)
array (
  0 => 'count',
  1 => 'array_filter',
  2 => 'array_map',
)
Function invocations found on file Parser/PHP/Strategy/AnnotationStrategy.php : (7)
array (
  0 => 'array_filter',
  1 => 'array_map',
  2 => 'ltrim',
  3 => 'get_class',
  4 => 'array_merge',
  5 => 'property_exists',
  6 => 'iterator_to_array',
)
Function invocations found on file Parser/PHP/SymbolCollectorInterface.php : (0)
array (
)
Function invocations found on file Parser/PHP/FileInclude.php : (1)
array (
  0 => 'property_exists',
)
Function invocations found on file Exception/IOException.php : (0)
array (
)
Function invocations found on file Parser/PHP/Strategy/FunctionInvocationStrategy.php : (1)
array (
  0 => 'assert',
)
Function invocations found on file Parser/PHP/AutoloadType.php : (0)
array (
)
Function invocations found on file Parser/PHP/AbstractCollector.php : (1)
array (
  0 => 'get_class',
)
Function invocations found on file File/FileContentProvider.php : (2)
array (
  0 => 'file_exists',
  1 => 'file_get_contents',
)
Function invocations found on file Parser/PHP/ConsumedSymbolCollector.php : (5)
array (
  0 => 'count',
  1 => 'array_merge',
  2 => 'array_map',
  3 => 'array_unique',
  4 => 'array_keys',
)
End line <<<

Time: 349 ms, Memory: 8.00Mb

@llaville
Copy link
Contributor Author

llaville commented Feb 21, 2024

Related to Static Analysis failure (https://github.com/composer-unused/symbol-parser/actions/runs/7989925501/job/21817531464#step:5:10)

Error: Parameter #1 $callback of function array_map expects (callable(PhpParser\Node\UseItem): mixed)|null, Closure(PhpParser\Node\Stmt\UseUse): non-falsy-string given.
 ------ -------------------------------------------------------------- 
  Line   src/Parser/PHP/Strategy/UseStrategy.php                       
 ------ -------------------------------------------------------------- 
  32     Parameter #1 $callback of function array_map expects          
         (callable(PhpParser\Node\UseItem): mixed)|null,               
         Closure(PhpParser\Node\Stmt\UseUse): non-falsy-string given.  
 ------ -------------------------------------------------------------- 

Answer is on PHP-Parser Upgrade Guide

Node\Stmt\UseUse is now Node\UseItem and no longer extends Node\Stmt.

PS: fixed with commit cf9f01c

@llaville
Copy link
Contributor Author

@icanhazstring Due to my last comment on nikic/PHP-Parser#981 (comment) we should think to :

  • either do not add support to PHP-Parser 5.0
  • drop support to PHP 7

WDYT about this ?

@icanhazstring
Copy link
Member

Yes. I do have a open PR on composer-unused to drop 7.4 support . But have problems with the phar build. But dropping it here would also make sense then 👍

@llaville
Copy link
Contributor Author

@icanhazstring Very strange behavior between PHPUnit on local and PHAR version

Running with vendor/bin/phpunit -c phpunit-9.xml -v --do-not-cache-result --debug

PHPUnit 9.6 (Composer) results
PHPUnit 9.6.16 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.4.33
Configuration: phpunit-9.xml

Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseClasses' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseClasses' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseInterfaces' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseInterfaces' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseConstants' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseConstants' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedConstants' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedConstants' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldFindConsumedConstants' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldFindConsumedConstants' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadRootSymbolsCorrectly' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadRootSymbolsCorrectly' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadForeignSymbolsCorrectly' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadForeignSymbolsCorrectly' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsForeignDefinedFileSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsForeignDefinedFileSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedFileSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedFileSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedAutoloadFileRequireSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedAutoloadFileRequireSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsArraySymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsArraySymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsSymbolsInExcludedDirs' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsSymbolsInExcludedDirs' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsNonExistingDirectories' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsNonExistingDirectories' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::shouldAvoidNonStaticPaths' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::shouldAvoidNonStaticPaths' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::itParsesStringLiteralsFromConcat' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::itParsesStringLiteralsFromConcat' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::itShouldParseAnnotations' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::itShouldParseAnnotations' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::refTestIssue66' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::refTestIssue66' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FullQualifiedParameterStrategyTest::itShouldParseFQNFunctionParameter' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FullQualifiedParameterStrategyTest::itShouldParseFQNFunctionParameter' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FunctionInvocationStrategyTest::itShouldParseConsumedFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FunctionInvocationStrategyTest::itShouldParseConsumedFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\TypedAttributeStrategyTest::itShouldParseSymbolFromTypedAttribute' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\TypedAttributeStrategyTest::itShouldParseSymbolFromTypedAttribute' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldConsolidateSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldConsolidateSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldNotTraverseClasses' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldNotTraverseClasses' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddFunctionSymbolNames' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddFunctionSymbolNames' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddConstantSymbolNames' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddConstantSymbolNames' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldReturnEmptySymbolsOnEmptyPackage' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldReturnEmptySymbolsOnEmptyPackage' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldMatchFiles' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldMatchFiles' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldNotMatchWithFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldNotMatchWithFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldMatchNameSpaceFromClass' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldMatchNameSpaceFromClass' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldBeImmutable' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldBeImmutable' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldContainAddedSymbol' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldContainAddedSymbol' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldAddListOfSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldAddListOfSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itIteratesOverItems' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itIteratesOverItems' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr0' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr0' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr4' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr4' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A not part of B" ('A', 'B', false)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A not part of B" ('A', 'B', false)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A is part of A" ('A', 'A', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A is part of A" ('A', 'A', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B is part of A\B" ('B', 'A\B', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B is part of A\B" ('B', 'A\B', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B\C is part of A\B" ('B\C', 'A\B', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B\C is part of A\B" ('B\C', 'A\B', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B\C is part of C\B\A" ('A\B\C', 'C\B\A', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B\C is part of C\B\A" ('A\B\C', 'C\B\A', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "nothing not part of A\B" ('', 'A\B', false)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "nothing not part of A\B" ('', 'A\B', false)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B not part of nothing" ('A\B', '', false)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B not part of nothing" ('A\B', '', false)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "array_keys part of \array_keys" ('array_keys', '\array_keys', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "array_keys part of \array_keys" ('array_keys', '\array_keys', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B part of \A\B" ('B', '\A\B', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B part of \A\B" ('B', '\A\B', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B equals A\B" ('A\B', 'B', 'A\B')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B equals A\B" ('A\B', 'B', 'A\B')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B\C equals A\B\C" ('A\B', 'B\C', 'A\B\C')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B\C equals A\B\C" ('A\B', 'B\C', 'A\B\C')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "empty with A\B\C equals A\B\C" ('', 'A\B\C', 'A\B\C')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "empty with A\B\C equals A\B\C" ('', 'A\B\C', 'A\B\C')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "array_keys with \array_keys equals array_keys" ('array_keys', '\array_keys', 'array_keys')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "array_keys with \array_keys equals array_keys" ('array_keys', '\array_keys', 'array_keys')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "B\NS\MyClass with MyClass equals B\NS\MyClass" ('B\NS\MyClass', 'MyClass', 'B\NS\MyClass')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "B\NS\MyClass with MyClass equals B\NS\MyClass" ('B\NS\MyClass', 'MyClass', 'B\NS\MyClass')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolTest::itShouldMatchOtherSymbolWithSameName' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolTest::itShouldMatchOtherSymbolWithSameName' ended


Time: 00:00.104, Memory: 18.00 MB

OK (52 tests, 87 assertions)

While running with php phpunit-9.6.16.phar -c phpunit-9.xml -v --do-not-cache-result --debug

PHPUnit 9.6 (PHAR) results
PHPUnit 9.6.16 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.4.33
Configuration: phpunit-9.xml

Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseClasses' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseClasses' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseInterfaces' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseInterfaces' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseConstants' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseConstants' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedConstants' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedConstants' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldFindConsumedConstants' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldFindConsumedConstants' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadRootSymbolsCorrectly' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadRootSymbolsCorrectly' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadForeignSymbolsCorrectly' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadForeignSymbolsCorrectly' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsForeignDefinedFileSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsForeignDefinedFileSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedFileSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedFileSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedAutoloadFileRequireSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedAutoloadFileRequireSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsArraySymbols' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsArraySymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsSymbolsInExcludedDirs' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsSymbolsInExcludedDirs' ended
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsNonExistingDirectories' started
Test 'ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsNonExistingDirectories' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::shouldAvoidNonStaticPaths' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::shouldAvoidNonStaticPaths' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::itParsesStringLiteralsFromConcat' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::itParsesStringLiteralsFromConcat' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::itShouldParseAnnotations' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::itShouldParseAnnotations' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::refTestIssue66' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::refTestIssue66' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FullQualifiedParameterStrategyTest::itShouldParseFQNFunctionParameter' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FullQualifiedParameterStrategyTest::itShouldParseFQNFunctionParameter' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FunctionInvocationStrategyTest::itShouldParseConsumedFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FunctionInvocationStrategyTest::itShouldParseConsumedFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\TypedAttributeStrategyTest::itShouldParseSymbolFromTypedAttribute' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\TypedAttributeStrategyTest::itShouldParseSymbolFromTypedAttribute' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldConsolidateSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldConsolidateSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldNotTraverseClasses' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldNotTraverseClasses' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddFunctionSymbolNames' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddFunctionSymbolNames' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddConstantSymbolNames' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNodeVisitorTest::itShouldAddConstantSymbolNames' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldReturnEmptySymbolsOnEmptyPackage' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldReturnEmptySymbolsOnEmptyPackage' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldMatchFiles' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\Loader\DependencySymbolLoaderTest::itShouldMatchFiles' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldNotMatchWithFunctions' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldNotMatchWithFunctions' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldMatchNameSpaceFromClass' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\NamespaceSymbolTest::itShouldMatchNameSpaceFromClass' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldBeImmutable' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldBeImmutable' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldContainAddedSymbol' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldContainAddedSymbol' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldAddListOfSymbols' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itShouldAddListOfSymbols' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itIteratesOverItems' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolListTest::itIteratesOverItems' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr0' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr0' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr4' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolLoaderTest::itShouldMatchPsr4' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A not part of B" ('A', 'B', false)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A not part of B" ('A', 'B', false)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A is part of A" ('A', 'A', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A is part of A" ('A', 'A', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B is part of A\B" ('B', 'A\B', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B is part of A\B" ('B', 'A\B', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B\C is part of A\B" ('B\C', 'A\B', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B\C is part of A\B" ('B\C', 'A\B', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B\C is part of C\B\A" ('A\B\C', 'C\B\A', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B\C is part of C\B\A" ('A\B\C', 'C\B\A', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "nothing not part of A\B" ('', 'A\B', false)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "nothing not part of A\B" ('', 'A\B', false)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B not part of nothing" ('A\B', '', false)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "A\B not part of nothing" ('A\B', '', false)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "array_keys part of \array_keys" ('array_keys', '\array_keys', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "array_keys part of \array_keys" ('array_keys', '\array_keys', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B part of \A\B" ('B', '\A\B', true)' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itShouldResultAsPartOf with data set "B part of \A\B" ('B', '\A\B', true)' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B equals A\B" ('A\B', 'B', 'A\B')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B equals A\B" ('A\B', 'B', 'A\B')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B\C equals A\B\C" ('A\B', 'B\C', 'A\B\C')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "A\B with B\C equals A\B\C" ('A\B', 'B\C', 'A\B\C')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "empty with A\B\C equals A\B\C" ('', 'A\B\C', 'A\B\C')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "empty with A\B\C equals A\B\C" ('', 'A\B\C', 'A\B\C')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "array_keys with \array_keys equals array_keys" ('array_keys', '\array_keys', 'array_keys')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "array_keys with \array_keys equals array_keys" ('array_keys', '\array_keys', 'array_keys')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "B\NS\MyClass with MyClass equals B\NS\MyClass" ('B\NS\MyClass', 'MyClass', 'B\NS\MyClass')' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolNameTest::itMergesSymbolNames with data set "B\NS\MyClass with MyClass equals B\NS\MyClass" ('B\NS\MyClass', 'MyClass', 'B\NS\MyClass')' ended
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolTest::itShouldMatchOtherSymbolWithSameName' started
Test 'ComposerUnused\SymbolParser\Test\Unit\Symbol\SymbolTest::itShouldMatchOtherSymbolWithSameName' ended


Time: 00:00.051, Memory: 28.00 MB

There were 24 errors:

1) ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseClasses
Error: Token T_NAME_QUALIFIED has ID of type string, should be int. You may be using a library with broken token emulation

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php:30
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php:62
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/Lexer.php:5
/shared/backups/forks/symbol-parser/vendor/composer/ClassLoader.php:578
/shared/backups/forks/symbol-parser/vendor/composer/ClassLoader.php:432
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php:24
/shared/backups/forks/symbol-parser/vendor/composer/ClassLoader.php:578
/shared/backups/forks/symbol-parser/vendor/composer/ClassLoader.php:432
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:18
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/Parser/PHP/SymbolNameParserTest.php:25

2) ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseInterfaces
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/Parser/PHP/SymbolNameParserTest.php:53

3) ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseFunctions
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/Parser/PHP/SymbolNameParserTest.php:81

4) ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseConstants
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/Parser/PHP/SymbolNameParserTest.php:107

5) ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedConstants
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/Parser/PHP/SymbolNameParserTest.php:134

6) ComposerUnused\SymbolParser\Test\Integration\Parser\PHP\SymbolNameParserTest::itShouldFindConsumedConstants
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/Parser/PHP/SymbolNameParserTest.php:158

7) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadRootSymbolsCorrectly
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:70
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/ClassmapAutoloadTest.php:21

8) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\ClassmapAutoloadTest::itShouldLoadForeignSymbolsCorrectly
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:70
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/ClassmapAutoloadTest.php:41

9) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsForeignDefinedFileSymbols
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:70
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/FileSymbolLoaderTest.php:23

10) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedFileSymbols
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:100
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/FileSymbolLoaderTest.php:35

11) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsConsumedAutoloadFileRequireSymbols
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:100
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/FileSymbolLoaderTest.php:47

12) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itFindsArraySymbols
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:100
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/FileSymbolLoaderTest.php:59

13) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsSymbolsInExcludedDirs
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:100
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/FileSymbolLoaderTest.php:72

14) ComposerUnused\SymbolParser\Test\Integration\Symbol\Loader\FileSymbolLoaderTest::itSkipsNonExistingDirectories
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Integration/AbstractIntegrationTestCase.php:70
/shared/backups/forks/symbol-parser/tests/Integration/Symbol/Loader/FileSymbolLoaderTest.php:82

15) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::shouldAvoidNonStaticPaths
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/FileIncludeTest.php:28

16) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\FileIncludeTest::itParsesStringLiteralsFromConcat
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/FileIncludeTest.php:50

17) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::itShouldParseAnnotations
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:24
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/Strategy/AnnotationStrategyTest.php:116

18) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\AnnotationStrategyTest::refTestIssue66
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:24
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/Strategy/AnnotationStrategyTest.php:173

19) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FullQualifiedParameterStrategyTest::itShouldParseFQNFunctionParameter
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:24
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/Strategy/FullQualifiedParameterStrategyTest.php:35

20) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\FunctionInvocationStrategyTest::itShouldParseConsumedFunctions
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:24
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/Strategy/FunctionInvocationStrategyTest.php:30

21) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\Strategy\TypedAttributeStrategyTest::itShouldParseSymbolFromTypedAttribute
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:24
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/Strategy/TypedAttributeStrategyTest.php:38

22) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedSymbols
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:38
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/SymbolNameParserTest.php:29

23) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldParseDefinedFunctions
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:38
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/SymbolNameParserTest.php:46

24) ComposerUnused\SymbolParser\Test\Unit\Parser\PHP\SymbolNameParserTest::itShouldConsolidateSymbols
Error: Undefined constant 'T_NAME_RELATIVE'

/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:1219
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php:159
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:21
/shared/backups/forks/symbol-parser/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php:32
/shared/backups/forks/symbol-parser/tests/ParserTestCase.php:24
/shared/backups/forks/symbol-parser/tests/Unit/Parser/PHP/SymbolNameParserTest.php:71

ERRORS!
Tests: 52, Assertions: 34, Errors: 24.

@llaville
Copy link
Contributor Author

llaville commented Feb 21, 2024

@icanhazstring Could you re-trigger a CI pipeline build on this PR to compare with PHP-Parser 5.0.1

Not needed : see answer at nikic/PHP-Parser#981 (comment)

@llaville
Copy link
Contributor Author

llaville commented Feb 21, 2024

@icanhazstring
For reason nikic/PHP-Parser#981 (comment)
and also because GitHub Action shivammathur/setup-php use PHAR versions of tools like PHPUnit (see https://github.com/shivammathur/setup-php/blob/2.29.0/dist/index.js#L969)

I'll update workflow in next PR iteration to use PHPUnit dev dependency installed by Composer

PS: see commit 7efe697

@llaville
Copy link
Contributor Author

@icanhazstring Finally we did it !
Big Thanks to @nikic for his help to find the nasty bug

Copy link
Member

@icanhazstring icanhazstring left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks again for the update 🎉👍

@icanhazstring icanhazstring merged commit 31eab42 into composer-unused:main Feb 22, 2024
10 checks passed
@llaville llaville deleted the php-parser-v5 branch February 22, 2024 07:41
@TomasVotruba
Copy link

TomasVotruba commented Mar 6, 2024

Not sure if this is a good idea, as it could cause bugs like this in compatible php-parser versions:
composer-unused/composer-unused#610

Instead the composer-unused should be scoped, so it does not enforce dependency on php-parser at all.
I had similar issue with Symfon 6.4 being enforced.

@llaville
Copy link
Contributor Author

llaville commented Mar 7, 2024

@TomasVotruba I've tested my contribs (see RFC composer-unused/composer-unused#630) in real condition and found no issues with Parser 4.18 or 5.0

But as nobody is perfect ;-) I've called community to help to test it too !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants