예제 #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
 protected function setUp()
 {
     $this->tempDir = TestUtil::makeTempDir('puli-composer-plugin', __CLASS__);
     $filesystem = new Filesystem();
     $filesystem->mirror(__DIR__ . '/Fixtures/root', $this->tempDir);
     $this->io = $this->getMock('Composer\\IO\\IOInterface');
     $this->config = new Config(false, $this->tempDir);
     $this->config->merge(array('config' => array('vendor-dir' => 'the-vendor')));
     $this->installationManager = $this->getMockBuilder('Composer\\Installer\\InstallationManager')->disableOriginalConstructor()->getMock();
     $this->installationManager->expects($this->any())->method('getInstallPath')->will($this->returnCallback(array($this, 'getInstallPath')));
     $this->rootPackage = new RootPackage('vendor/root', '1.0', '1.0');
     $this->rootPackage->setRequires(array('vendor/package1' => new Link('vendor/root', 'vendor/package1'), 'vendor/package2' => new Link('vendor/root', 'vendor/package2')));
     $this->localRepository = new TestLocalRepository(array(new Package('vendor/package1', '1.0', '1.0'), new Package('vendor/package2', '1.0', '1.0')));
     $this->repositoryManager = new RepositoryManager($this->io, $this->config);
     $this->repositoryManager->setLocalRepository($this->localRepository);
     $this->installPaths = array();
     $this->composer = new Composer();
     $this->composer->setRepositoryManager($this->repositoryManager);
     $this->composer->setInstallationManager($this->installationManager);
     $this->composer->setConfig($this->config);
     $this->composer->setPackage($this->rootPackage);
     $this->puliRunner = $this->getMockBuilder('Puli\\ComposerPlugin\\PuliRunner')->disableOriginalConstructor()->getMock();
     $this->previousWd = getcwd();
     chdir($this->tempDir);
     $this->plugin = new PuliPlugin($this->puliRunner);
 }
 protected function setUp()
 {
     while (false === mkdir($this->tempDir = sys_get_temp_dir() . '/puli-plugin/PuliPluginTest_root' . rand(10000, 99999), 0777, true)) {
     }
     $filesystem = new Filesystem();
     $filesystem->mirror(__DIR__ . '/Fixtures/root', $this->tempDir);
     $this->io = $this->getMock('Composer\\IO\\IOInterface');
     $this->config = new Config(false, $this->tempDir);
     $this->config->merge(array('config' => array('vendor-dir' => 'the-vendor')));
     $this->installationManager = $this->getMockBuilder('Composer\\Installer\\InstallationManager')->disableOriginalConstructor()->getMock();
     $this->installationManager->expects($this->any())->method('getInstallPath')->will($this->returnCallback(array($this, 'getInstallPath')));
     $this->rootPackage = new RootPackage('vendor/root', '1.0', '1.0');
     $this->localRepository = new TestLocalRepository(array(new Package('vendor/package1', '1.0', '1.0'), new Package('vendor/package2', '1.0', '1.0')));
     $this->repositoryManager = new RepositoryManager($this->io, $this->config);
     $this->repositoryManager->setLocalRepository($this->localRepository);
     $this->installPaths = array();
     $this->composer = new Composer();
     $this->composer->setRepositoryManager($this->repositoryManager);
     $this->composer->setInstallationManager($this->installationManager);
     $this->composer->setConfig($this->config);
     $this->composer->setPackage($this->rootPackage);
     $this->puliRunner = $this->getMockBuilder('Puli\\ComposerPlugin\\PuliRunner')->disableOriginalConstructor()->getMock();
     $this->previousWd = getcwd();
     chdir($this->tempDir);
     $this->plugin = new PuliPlugin($this->puliRunner);
 }
예제 #4
0
 protected function setUp()
 {
     $this->last_wdir = getcwd();
     chdir(__DIR__ . '/../');
     $this->plugin = new Plugin();
     $this->composer = new Composer();
     $this->io = new BufferIO('', StreamOutput::VERBOSITY_VERY_VERBOSE);
     $config = new Config(false);
     $config->merge(['config' => ['vendor-dir' => __DIR__]]);
     $repo_manager = new RepositoryManager($this->io, $config);
     $repository = new InstalledArrayRepository();
     $package = new RootPackage('foobar', 1, 1);
     $event_dispatcher = new EventDispatcher($this->composer, $this->io);
     $autoload_generator = new AutoloadGenerator($event_dispatcher, $this->io);
     $package->setType('hostnet-entity');
     $repo_manager->setLocalRepository($repository);
     $this->composer->setConfig($config);
     $this->composer->setRepositoryManager($repo_manager);
     $this->composer->setPackage($package);
     $this->composer->setAutoloadGenerator($autoload_generator);
 }
예제 #5
0
 private function mockRepositoryManager()
 {
     $repository_manager = new RepositoryManager($this->mockIO(), $this->mockConfig());
     $repository_manager->setLocalRepository(new WritableArrayRepository());
     return $repository_manager;
 }
예제 #6
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));
 }
예제 #7
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();
     foreach ($rm->getLocalRepository()->getPackages() as $package) {
         $packages[(string) $package] = clone $package;
     }
     foreach ($packages as $key => $package) {
         if ($package instanceof AliasPackage) {
             $alias = (string) $package->getAliasOf();
             $packages[$key] = new AliasPackage($packages[$alias], $package->getVersion(), $package->getPrettyVersion());
         }
     }
     $rm->setLocalRepository(new InstalledArrayRepository($packages));
 }
예제 #8
0
 /**
  * @param Repository\RepositoryManager $rm
  * @param string                       $vendorDir
  */
 protected function addLocalRepository(IOInterface $io, RepositoryManager $rm, $vendorDir)
 {
     $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/composer/installed.json', null, $io)));
 }
예제 #9
0
 protected function addLocalRepository(RepositoryManager $rm, $vendorDir)
 {
     $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir . '/.composer/installed.json')));
 }
예제 #10
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')));
 }