update() public method

public update ( Composer\Repository\InstalledRepositoryInterface $repo, Composer\Package\PackageInterface $initial, Composer\Package\PackageInterface $target )
$repo Composer\Repository\InstalledRepositoryInterface
$initial Composer\Package\PackageInterface
$target Composer\Package\PackageInterface
 /**
  * Behaviors :
  *
  * New (version replacement, Stable to Dev or Dev to Stable) :
  *  - Stable : > vendor directory
  *  - Dev : > shared dependencies directory
  *
  * Update (if package name & target directory are the same) :
  *  - Stable : checkout new sources
  *  - Dev : checkout new sources
  *
  * In case of replacement (see "New" part above) :
  *  - The old package is completely deleted ("composer remove" process) before installing the new version
  *
  *
  * {@inheritdoc}
  */
 public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target)
 {
     // If both packages are stable version (tag)
     if (!$target->isDev() && !$initial->isDev()) {
         $this->defaultInstaller->update($repo, $initial, $target);
     } else {
         if (!$repo->hasPackage($initial)) {
             throw new \InvalidArgumentException('Package is not installed : ' . $initial->getPrettyName());
         }
         $this->symlinkInstaller->update($repo, $initial, $target);
     }
 }
 /**
  * @test
  *
  * @depends testInstallerCreationShouldNotCreateVendorDirectory
  * @depends testInstallerCreationShouldNotCreateBinDirectory
  */
 public function updateDevelopmentToStable()
 {
     $initial = $this->createDevelopmentPackageMock();
     $target = $this->createStablePackageMock();
     $installer = new SharedPackageInstaller($this->io, $this->composer, $this->fs, $this->dataManager);
     $defaultInstaller = $this->getMockBuilder('Composer\\Installer\\LibraryInstaller')->disableOriginalConstructor()->getMock();
     $defaultInstaller->expects($this->once())->method('install');
     $im = new InstallationManager();
     $im->addInstaller(new SharedPackageInstallerSolver($installer, $defaultInstaller));
     $this->composer->setInstallationManager($im);
     $initial->expects($this->any())->method('getPrettyName')->will($this->returnValue('initial-package'));
     $initial->expects($this->once())->method('getType')->willReturn('shared-package');
     $target->expects($this->once())->method('getType')->willReturn('shared-package');
     $target->expects($this->any())->method('getPrettyName')->will($this->returnValue('package1'));
     $target->expects($this->any())->method('getTargetDir')->will($this->returnValue('newtarget'));
     $this->repository->expects($this->exactly(1))->method('hasPackage')->will($this->onConsecutiveCalls(true, true, false, false));
     $installer->update($this->repository, $initial, $target);
     $this->assertFileExists($this->vendorDir, 'Vendor dir should be created');
     $this->assertFileExists($this->binDir, 'Bin dir should be created');
     $this->assertFileExists($this->dependenciesDir, 'Dependencies dir should be created');
     $this->assertFileNotExists($this->symlinkDir, 'Symlink dir should be created');
     $this->assertFalse(is_link($this->symlinkDir . '/letudiant/foo-bar'));
 }