diff --git a/src/Composer/Autoload/AutoloadGenerator.php b/src/Composer/Autoload/AutoloadGenerator.php index 138b111d6..c79076c21 100644 --- a/src/Composer/Autoload/AutoloadGenerator.php +++ b/src/Composer/Autoload/AutoloadGenerator.php @@ -719,7 +719,7 @@ EOF; $package = $item[0]; foreach (array_merge($package->getReplaces(), $package->getProvides()) as $link) { if (preg_match('{^ext-(.+)$}iD', $link->getTarget(), $match)) { - $extensionProviders[$match[1]][] = $link->getConstraint() ?: new MatchAllConstraint(); + $extensionProviders[$match[1]][] = $link->getConstraint(); } } } @@ -736,7 +736,8 @@ EOF; continue; } - if ('php' === $link->getTarget() && ($constraint = $link->getConstraint())) { + if ('php' === $link->getTarget()) { + $constraint = $link->getConstraint(); if ($constraint->getLowerBound()->compareTo($lowestPhpVersion, '>')) { $lowestPhpVersion = $constraint->getLowerBound(); } @@ -746,7 +747,7 @@ EOF; // skip extension checks if they have a valid provider/replacer if (isset($extensionProviders[$match[1]])) { foreach ($extensionProviders[$match[1]] as $provided) { - if (!$link->getConstraint() || $provided->matches($link->getConstraint())) { + if ($provided->matches($link->getConstraint())) { continue 2; } } diff --git a/tests/Composer/Test/DependencyResolver/RuleSetIteratorTest.php b/tests/Composer/Test/DependencyResolver/RuleSetIteratorTest.php index de6dba023..f0321a42c 100644 --- a/tests/Composer/Test/DependencyResolver/RuleSetIteratorTest.php +++ b/tests/Composer/Test/DependencyResolver/RuleSetIteratorTest.php @@ -22,7 +22,9 @@ use Composer\Test\TestCase; class RuleSetIteratorTest extends TestCase { + /** @var array */ protected $rules; + /** @var Pool */ protected $pool; protected function setUp() diff --git a/tests/Composer/Test/DependencyResolver/SolverTest.php b/tests/Composer/Test/DependencyResolver/SolverTest.php index 712b2b108..629a399a3 100644 --- a/tests/Composer/Test/DependencyResolver/SolverTest.php +++ b/tests/Composer/Test/DependencyResolver/SolverTest.php @@ -16,6 +16,11 @@ use Composer\IO\NullIO; use Composer\Repository\ArrayRepository; use Composer\Repository\LockArrayRepository; use Composer\DependencyResolver\DefaultPolicy; +use Composer\DependencyResolver\Operation\InstallOperation; +use Composer\DependencyResolver\Operation\MarkAliasInstalledOperation; +use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation; +use Composer\DependencyResolver\Operation\UninstallOperation; +use Composer\DependencyResolver\Operation\UpdateOperation; use Composer\DependencyResolver\Request; use Composer\DependencyResolver\Solver; use Composer\DependencyResolver\SolverProblemsException; @@ -24,15 +29,23 @@ use Composer\Repository\RepositorySet; use Composer\Test\TestCase; use Composer\Semver\Constraint\MultiConstraint; use Composer\Semver\Constraint\MatchAllConstraint; +use Composer\DependencyResolver\Pool; class SolverTest extends TestCase { + /** @var RepositorySet */ protected $repoSet; + /** @var ArrayRepository */ protected $repo; + /** @var LockArrayRepository */ protected $repoLocked; + /** @var Request */ protected $request; + /** @var DefaultPolicy */ protected $policy; + /** @var Solver|null */ protected $solver; + /** @var Pool */ protected $pool; public function setUp() @@ -1046,23 +1059,25 @@ class SolverTest extends TestCase $result = array(); foreach ($transaction->getOperations() as $operation) { - if ('update' === $operation->getOperationType()) { + if ($operation instanceof UpdateOperation) { $result[] = array( 'job' => 'update', 'from' => $operation->getInitialPackage(), 'to' => $operation->getTargetPackage(), ); - } elseif (in_array($operation->getOperationType(), array('markAliasInstalled', 'markAliasUninstalled'))) { + } elseif ($operation instanceof MarkAliasInstalledOperation || $operation instanceof MarkAliasUninstalledOperation) { $result[] = array( 'job' => $operation->getOperationType(), 'package' => $operation->getPackage(), ); - } else { + } elseif ($operation instanceof UninstallOperation || $operation instanceof InstallOperation) { $job = ('uninstall' === $operation->getOperationType() ? 'remove' : 'install'); $result[] = array( 'job' => $job, 'package' => $operation->getPackage(), ); + } else { + throw new \LogicException('Unexpected operation: '.get_class($operation)); } } diff --git a/tests/Composer/Test/InstalledVersionsTest.php b/tests/Composer/Test/InstalledVersionsTest.php index 380114a2e..c9e291d3e 100644 --- a/tests/Composer/Test/InstalledVersionsTest.php +++ b/tests/Composer/Test/InstalledVersionsTest.php @@ -17,6 +17,9 @@ use Composer\Semver\VersionParser; class InstalledVersionsTest extends TestCase { + /** + * @var string + */ private $root; public static function setUpBeforeClass() diff --git a/tests/Composer/Test/Installer/MetapackageInstallerTest.php b/tests/Composer/Test/Installer/MetapackageInstallerTest.php index 4ba65991f..012a28a5a 100644 --- a/tests/Composer/Test/Installer/MetapackageInstallerTest.php +++ b/tests/Composer/Test/Installer/MetapackageInstallerTest.php @@ -17,8 +17,17 @@ use Composer\Test\TestCase; class MetapackageInstallerTest extends TestCase { + /** + * @var \Composer\Repository\InstalledRepositoryInterface&\PHPUnit\Framework\MockObject\MockObject + */ private $repository; + /** + * @var MetapackageInstaller + */ private $installer; + /** + * @var \Composer\IO\IOInterface&\PHPUnit\Framework\MockObject\MockObject + */ private $io; protected function setUp() diff --git a/tests/Composer/Test/Mock/HttpDownloaderMock.php b/tests/Composer/Test/Mock/HttpDownloaderMock.php index 1e2774af0..b58a9628a 100644 --- a/tests/Composer/Test/Mock/HttpDownloaderMock.php +++ b/tests/Composer/Test/Mock/HttpDownloaderMock.php @@ -18,10 +18,13 @@ use Composer\Downloader\TransportException; class HttpDownloaderMock extends HttpDownloader { + /** + * @var array + */ protected $contentMap; /** - * @param array $contentMap associative array of locations and content + * @param array $contentMap associative array of locations and content */ public function __construct(array $contentMap) { diff --git a/tests/Composer/Test/Mock/InstallationManagerMock.php b/tests/Composer/Test/Mock/InstallationManagerMock.php index 46b115771..9e235b917 100644 --- a/tests/Composer/Test/Mock/InstallationManagerMock.php +++ b/tests/Composer/Test/Mock/InstallationManagerMock.php @@ -24,9 +24,21 @@ use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation; class InstallationManagerMock extends InstallationManager { + /** + * @var PackageInterface[] + */ private $installed = array(); + /** + * @var PackageInterface[][] + */ private $updated = array(); + /** + * @var PackageInterface[] + */ private $uninstalled = array(); + /** + * @var string[] + */ private $trace = array(); public function __construct() diff --git a/tests/Composer/Test/Mock/ProcessExecutorMock.php b/tests/Composer/Test/Mock/ProcessExecutorMock.php index 4010e0f4c..3f516eb13 100644 --- a/tests/Composer/Test/Mock/ProcessExecutorMock.php +++ b/tests/Composer/Test/Mock/ProcessExecutorMock.php @@ -24,9 +24,21 @@ use React\Promise\Promise; */ class ProcessExecutorMock extends ProcessExecutor { + /** + * @var array + */ private $expectations = array(); + /** + * @var bool + */ private $strict = false; + /** + * @var array{return: int, stdout: string, stderr: string} + */ private $defaultHandler = array('return' => 0, 'stdout' => '', 'stderr' => ''); + /** + * @var string[] + */ private $log = array(); /** @@ -47,7 +59,7 @@ class ProcessExecutorMock extends ProcessExecutor return array_merge($default, $expect); }, $expectations); $this->strict = $strict; - $this->defaultHandler = array_merge($default, $defaultHandler); + $this->defaultHandler = array_merge($this->defaultHandler, $defaultHandler); } public function assertComplete(TestCase $testCase) diff --git a/tests/Composer/Test/Package/Archiver/ArchivableFilesFinderTest.php b/tests/Composer/Test/Package/Archiver/ArchivableFilesFinderTest.php index b8f110937..4742572ea 100644 --- a/tests/Composer/Test/Package/Archiver/ArchivableFilesFinderTest.php +++ b/tests/Composer/Test/Package/Archiver/ArchivableFilesFinderTest.php @@ -19,8 +19,17 @@ use Symfony\Component\Process\Process; class ArchivableFilesFinderTest extends TestCase { + /** + * @var string + */ protected $sources; + /** + * @var ArchivableFilesFinder + */ protected $finder; + /** + * @var Filesystem + */ protected $fs; protected function setUp() diff --git a/tests/Composer/Test/Package/Archiver/ArchiveManagerTest.php b/tests/Composer/Test/Package/Archiver/ArchiveManagerTest.php index a9f281975..662a84dd8 100644 --- a/tests/Composer/Test/Package/Archiver/ArchiveManagerTest.php +++ b/tests/Composer/Test/Package/Archiver/ArchiveManagerTest.php @@ -28,6 +28,9 @@ class ArchiveManagerTest extends ArchiverTest */ protected $manager; + /** + * @var string + */ protected $targetDir; public function setUp() diff --git a/tests/Composer/Test/Platform/HhvmDetectorTest.php b/tests/Composer/Test/Platform/HhvmDetectorTest.php index 1387f9aeb..de47672ac 100644 --- a/tests/Composer/Test/Platform/HhvmDetectorTest.php +++ b/tests/Composer/Test/Platform/HhvmDetectorTest.php @@ -20,6 +20,9 @@ use Symfony\Component\Process\ExecutableFinder; class HhvmDetectorTest extends TestCase { + /** + * @var HhvmDetector + */ private $hhvmDetector; protected function setUp() diff --git a/tests/Composer/Test/Repository/FilterRepositoryTest.php b/tests/Composer/Test/Repository/FilterRepositoryTest.php index e3f388da0..bf2953a08 100644 --- a/tests/Composer/Test/Repository/FilterRepositoryTest.php +++ b/tests/Composer/Test/Repository/FilterRepositoryTest.php @@ -20,6 +20,9 @@ use Composer\Package\BasePackage; class FilterRepositoryTest extends TestCase { + /** + * @var ArrayRepository + */ private $arrayRepo; public function setUp() diff --git a/tests/Composer/Test/Repository/Vcs/FossilDriverTest.php b/tests/Composer/Test/Repository/Vcs/FossilDriverTest.php index a6953f834..d43afb7f4 100644 --- a/tests/Composer/Test/Repository/Vcs/FossilDriverTest.php +++ b/tests/Composer/Test/Repository/Vcs/FossilDriverTest.php @@ -19,7 +19,13 @@ use Composer\Util\Filesystem; class FossilDriverTest extends TestCase { + /** + * @var string + */ protected $home; + /** + * @var Config + */ protected $config; public function setUp() diff --git a/tests/Composer/Test/Repository/Vcs/GitBitbucketDriverTest.php b/tests/Composer/Test/Repository/Vcs/GitBitbucketDriverTest.php index 2dae0ab21..23c7fb766 100644 --- a/tests/Composer/Test/Repository/Vcs/GitBitbucketDriverTest.php +++ b/tests/Composer/Test/Repository/Vcs/GitBitbucketDriverTest.php @@ -24,15 +24,15 @@ use Composer\Util\Http\Response; */ class GitBitbucketDriverTest extends TestCase { - /** @type \Composer\IO\IOInterface|\PHPUnit_Framework_MockObject_MockObject */ + /** @var \Composer\IO\IOInterface&\PHPUnit\Framework\MockObject\MockObject */ private $io; - /** @type \Composer\Config */ + /** @var Config */ private $config; - /** @type \Composer\Util\HttpDownloader|\PHPUnit_Framework_MockObject_MockObject */ + /** @var \Composer\Util\HttpDownloader&\PHPUnit\Framework\MockObject\MockObject */ private $httpDownloader; - /** @type string */ + /** @var string */ private $home; - /** @type string */ + /** @var string */ private $originUrl = 'bitbucket.org'; protected function setUp() diff --git a/tests/Composer/Test/Repository/Vcs/GitLabDriverTest.php b/tests/Composer/Test/Repository/Vcs/GitLabDriverTest.php index 883231489..e6374a545 100644 --- a/tests/Composer/Test/Repository/Vcs/GitLabDriverTest.php +++ b/tests/Composer/Test/Repository/Vcs/GitLabDriverTest.php @@ -24,10 +24,25 @@ use Composer\Util\Http\Response; */ class GitLabDriverTest extends TestCase { + /** + * @var string + */ private $home; + /** + * @var Config + */ private $config; + /** + * @var \Prophecy\Prophecy\ObjectProphecy + */ private $io; + /** + * @var \Prophecy\Prophecy\ObjectProphecy + */ private $process; + /** + * @var \Prophecy\Prophecy\ObjectProphecy + */ private $httpDownloader; public function setUp() diff --git a/tests/Composer/Test/Repository/Vcs/HgDriverTest.php b/tests/Composer/Test/Repository/Vcs/HgDriverTest.php index 11143b476..d7bae8a11 100644 --- a/tests/Composer/Test/Repository/Vcs/HgDriverTest.php +++ b/tests/Composer/Test/Repository/Vcs/HgDriverTest.php @@ -19,11 +19,11 @@ use Composer\Config; class HgDriverTest extends TestCase { - /** @type \Composer\IO\IOInterface|\PHPUnit_Framework_MockObject_MockObject */ + /** @var \Composer\IO\IOInterface&\PHPUnit\Framework\MockObject\MockObject */ private $io; - /** @type Config */ + /** @var Config */ private $config; - /** @type string */ + /** @var string */ private $home; public function setUp() diff --git a/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php b/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php index 11f1524d3..520c85e32 100644 --- a/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php +++ b/tests/Composer/Test/Repository/Vcs/PerforceDriverTest.php @@ -24,13 +24,37 @@ use Composer\Test\Mock\ProcessExecutorMock; */ class PerforceDriverTest extends TestCase { + /** + * @var Config + */ protected $config; + /** + * @var \Composer\IO\IOInterface&\PHPUnit\Framework\MockObject\MockObject + */ protected $io; + /** + * @var ProcessExecutorMock + */ protected $process; + /** + * @var \Composer\Util\HttpDownloader&\PHPUnit\Framework\MockObject\MockObject + */ protected $httpDownloader; + /** + * @var string + */ protected $testPath; + /** + * @var PerforceDriver + */ protected $driver; + /** + * @var array + */ protected $repoConfig; + /** + * @var Perforce&\PHPUnit\Framework\MockObject\MockObject + */ protected $perforce; const TEST_URL = 'TEST_PERFORCE_URL'; @@ -41,7 +65,11 @@ class PerforceDriverTest extends TestCase { $this->testPath = $this->getUniqueTmpDirectory(); $this->config = $this->getTestConfig($this->testPath); - $this->repoConfig = $this->getTestRepoConfig(); + $this->repoConfig = array( + 'url' => self::TEST_URL, + 'depot' => self::TEST_DEPOT, + 'branch' => self::TEST_BRANCH, + ); $this->io = $this->getMockIOInterface(); $this->process = new ProcessExecutorMock; $this->httpDownloader = $this->getMockHttpDownloader(); @@ -55,14 +83,6 @@ class PerforceDriverTest extends TestCase //cleanup directory under test path $fs = new Filesystem; $fs->removeDirectory($this->testPath); - $this->driver = null; - $this->perforce = null; - $this->httpDownloader = null; - $this->process = null; - $this->io = null; - $this->repoConfig = null; - $this->config = null; - $this->testPath = null; } protected function overrideDriverInternalPerforce(Perforce $perforce) @@ -81,15 +101,6 @@ class PerforceDriverTest extends TestCase return $config; } - protected function getTestRepoConfig() - { - return array( - 'url' => self::TEST_URL, - 'depot' => self::TEST_DEPOT, - 'branch' => self::TEST_BRANCH, - ); - } - protected function getMockIOInterface() { return $this->getMockBuilder('Composer\IO\IOInterface')->getMock(); diff --git a/tests/Composer/Test/Repository/Vcs/SvnDriverTest.php b/tests/Composer/Test/Repository/Vcs/SvnDriverTest.php index b2699e61b..fe3e896bb 100644 --- a/tests/Composer/Test/Repository/Vcs/SvnDriverTest.php +++ b/tests/Composer/Test/Repository/Vcs/SvnDriverTest.php @@ -20,7 +20,13 @@ use Composer\Test\Mock\ProcessExecutorMock; class SvnDriverTest extends TestCase { + /** + * @var string + */ protected $home; + /** + * @var Config + */ protected $config; public function setUp() diff --git a/tests/Composer/Test/Repository/VcsRepositoryTest.php b/tests/Composer/Test/Repository/VcsRepositoryTest.php index b1d0e5a83..d517422fb 100644 --- a/tests/Composer/Test/Repository/VcsRepositoryTest.php +++ b/tests/Composer/Test/Repository/VcsRepositoryTest.php @@ -26,9 +26,18 @@ use Composer\Config; */ class VcsRepositoryTest extends TestCase { + /** + * @var string + */ private static $composerHome; + /** + * @var string + */ private static $gitRepo; - private $skipped; + /** + * @var ?string + */ + private $skipped = null; protected function initialize() { diff --git a/tests/Composer/Test/TestCase.php b/tests/Composer/Test/TestCase.php index 00a01a838..8a461644d 100644 --- a/tests/Composer/Test/TestCase.php +++ b/tests/Composer/Test/TestCase.php @@ -25,7 +25,13 @@ use Composer\Package\BasePackage; abstract class TestCase extends PolyfillTestCase { + /** + * @var ?VersionParser + */ private static $parser; + /** + * @var array + */ private static $executableCache = array(); /** diff --git a/tests/Composer/Test/Util/IniHelperTest.php b/tests/Composer/Test/Util/IniHelperTest.php index 43048989a..efcdbf9bb 100644 --- a/tests/Composer/Test/Util/IniHelperTest.php +++ b/tests/Composer/Test/Util/IniHelperTest.php @@ -21,6 +21,9 @@ use Composer\Test\TestCase; */ class IniHelperTest extends TestCase { + /** + * @var string|false + */ public static $envOriginal; public function testWithNoIni()