예제 #1
0
 /**
  * @dataProvider provideInstaller
  */
 public function testInstaller(PackageInterface $rootPackage, $repositories, array $options)
 {
     $io = $this->getMock('Composer\\IO\\IOInterface');
     $downloadManager = $this->getMock('Composer\\Downloader\\DownloadManager');
     $config = $this->getMock('Composer\\Config');
     $repositoryManager = new RepositoryManager($io, $config);
     $repositoryManager->setLocalRepository(new WritableRepositoryMock());
     $repositoryManager->setLocalDevRepository(new WritableRepositoryMock());
     if (!is_array($repositories)) {
         $repositories = array($repositories);
     }
     foreach ($repositories as $repository) {
         $repositoryManager->addRepository($repository);
     }
     $locker = $this->getMockBuilder('Composer\\Package\\Locker')->disableOriginalConstructor()->getMock();
     $installationManager = new InstallationManagerMock();
     $eventDispatcher = $this->getMockBuilder('Composer\\Script\\EventDispatcher')->disableOriginalConstructor()->getMock();
     $autoloadGenerator = $this->getMock('Composer\\Autoload\\AutoloadGenerator');
     $installer = new Installer($io, $config, clone $rootPackage, $downloadManager, $repositoryManager, $locker, $installationManager, $eventDispatcher, $autoloadGenerator);
     $result = $installer->run();
     $this->assertTrue($result);
     $expectedInstalled = isset($options['install']) ? $options['install'] : array();
     $expectedUpdated = isset($options['update']) ? $options['update'] : array();
     $expectedUninstalled = isset($options['uninstall']) ? $options['uninstall'] : array();
     $installed = $installationManager->getInstalledPackages();
     $this->assertSame($expectedInstalled, $installed);
     $updated = $installationManager->getUpdatedPackages();
     $this->assertSame($expectedUpdated, $updated);
     $uninstalled = $installationManager->getUninstalledPackages();
     $this->assertSame($expectedUninstalled, $uninstalled);
 }
예제 #2
0
 /**
  * Replace local repositories with InstalledArrayRepository instances
  *
  * This is to prevent any accidental modification of the existing repos on disk
  *
  * @param RepositoryManager $rm
  */
 private function mockLocalRepositories(RepositoryManager $rm)
 {
     $packages = array_map(function ($p) {
         return clone $p;
     }, $rm->getLocalRepository()->getPackages());
     foreach ($packages as $key => $package) {
         if ($package instanceof AliasPackage) {
             unset($packages[$key]);
         }
     }
     $rm->setLocalRepository(new InstalledArrayRepository($packages));
     $packages = array_map(function ($p) {
         return clone $p;
     }, $rm->getLocalDevRepository()->getPackages());
     foreach ($packages as $key => $package) {
         if ($package instanceof AliasPackage) {
             unset($packages[$key]);
         }
     }
     $rm->setLocalDevRepository(new InstalledArrayRepository($packages));
 }
예제 #3
0
 protected function addLocalRepository(RepositoryManager $rm, $vendorDir)
 {
     // TODO BC feature, remove after June 15th
     if (file_exists($vendorDir . '/.composer/installed.json')) {
         if (!is_dir($vendorDir . '/composer')) {
             mkdir($vendorDir . '/composer/', 0777, true);
         }
         rename($vendorDir . '/.composer/installed.json', $vendorDir . '/composer/installed.json');
     }
     if (file_exists($vendorDir . '/.composer/installed_dev.json')) {
         if (!is_dir($vendorDir . '/composer')) {
             mkdir($vendorDir . '/composer/', 0777, true);
         }
         rename($vendorDir . '/.composer/installed_dev.json', $vendorDir . '/composer/installed_dev.json');
     }
     if (file_exists($vendorDir . '/installed.json')) {
         if (!is_dir($vendorDir . '/composer')) {
             mkdir($vendorDir . '/composer/', 0777, true);
         }
         rename($vendorDir . '/installed.json', $vendorDir . '/composer/installed.json');
     }
     if (file_exists($vendorDir . '/installed_dev.json')) {
         if (!is_dir($vendorDir . '/composer')) {
             mkdir($vendorDir . '/composer/', 0777, true);
         }
         rename($vendorDir . '/installed_dev.json', $vendorDir . '/composer/installed_dev.json');
     }
     $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed.json')));
     $rm->setLocalDevRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed_dev.json')));
 }
예제 #4
0
 /**
  * @param Repository\RepositoryManager $rm
  * @param string                       $vendorDir
  */
 protected function addLocalRepository(RepositoryManager $rm, $vendorDir)
 {
     $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed.json')));
     $rm->setLocalDevRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed_dev.json')));
 }