Fix edge case where one adds a target-dir on a package that didnt have one before, refs #2279
parent
a813867065
commit
807600b255
|
@ -161,7 +161,15 @@ class LibraryInstaller implements InstallerInterface
|
||||||
$initialDownloadPath = $this->getInstallPath($initial);
|
$initialDownloadPath = $this->getInstallPath($initial);
|
||||||
$targetDownloadPath = $this->getInstallPath($target);
|
$targetDownloadPath = $this->getInstallPath($target);
|
||||||
if ($targetDownloadPath !== $initialDownloadPath) {
|
if ($targetDownloadPath !== $initialDownloadPath) {
|
||||||
$this->filesystem->copyThenRemove($initialDownloadPath, $targetDownloadPath);
|
// if the target is part of the initial dir, we force a remove + install
|
||||||
|
// to avoid the rename wiping the target dir as part of the initial dir cleanup
|
||||||
|
if (strpos($initialDownloadPath, $targetDownloadPath) === 0) {
|
||||||
|
$this->removeCode($initial);
|
||||||
|
$this->installCode($target);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->filesystem->rename($initialDownloadPath, $targetDownloadPath);
|
||||||
}
|
}
|
||||||
$this->downloadManager->update($initial, $target, $targetDownloadPath);
|
$this->downloadManager->update($initial, $target, $targetDownloadPath);
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,7 +135,7 @@ class LibraryInstallerTest extends TestCase
|
||||||
->getMock();
|
->getMock();
|
||||||
$filesystem
|
$filesystem
|
||||||
->expects($this->once())
|
->expects($this->once())
|
||||||
->method('copyThenRemove')
|
->method('rename')
|
||||||
->with($this->vendorDir.'/package1', $this->vendorDir.'/package1/newtarget');
|
->with($this->vendorDir.'/package1', $this->vendorDir.'/package1/newtarget');
|
||||||
|
|
||||||
$initial = $this->createPackageMock();
|
$initial = $this->createPackageMock();
|
||||||
|
|
Loading…
Reference in New Issue