/**
  * Pre Package event behaviour for backing up preserved paths.
  *
  * @param \Composer\Installer\PackageEvent $event
  */
 public function postPackage(PackageEvent $event)
 {
     $packages = $this->getPackagesFromEvent($event);
     $paths = $this->getInstallPathsFromPackages($packages);
     $preserver = new PathRemover($paths, $this->getPathsToRemove(), $this->filesystem, $this->io);
     $preserver->remove();
 }
 public function testRemove()
 {
     // Create testfiles
     $file1 = $this->workDirectory . '/file1.txt';
     file_put_contents($file1, 'Contents of file1');
     $file2 = $this->workDirectory . '/file2.txt';
     file_put_contents($file2, 'Contents of file2');
     $file3 = $this->workDirectory . '/file3.txt';
     file_put_contents($file3, 'Contents of file3');
     // Create files nested in directories
     $dir1 = $this->workDirectory . '/dir1';
     mkdir($dir1);
     $file4 = $dir1 . '/file4.txt';
     file_put_contents($file4, 'Contents of file4');
     $dir2 = $dir1 . '/dir2';
     mkdir($dir2);
     $file5 = $dir2 . '/file5.txt';
     file_put_contents($file5, 'Contents of file5');
     $dir3 = $this->workDirectory . '/dir3';
     mkdir($dir3);
     $installPaths = array($this->workDirectory);
     $removePaths = array($file1, $file2, $file2, $dir1);
     $remover = new PathRemover($installPaths, $removePaths, $this->fs, $this->io);
     $this->assertFileExists($file1, 'File1 created');
     $this->assertFileExists($file2, 'File2 created');
     $this->assertFileExists($file3, 'File3 created');
     $this->assertFileExists($dir1, 'Dir1 created');
     $this->assertFileExists($file4, 'File4 created');
     $this->assertFileExists($dir2, 'Dir2 created');
     $this->assertFileExists($file5, 'File5 created');
     $this->assertFileExists($dir3, 'Dir3 created');
     $remover->remove();
     $this->assertFileNotExists($file1, 'File1 removed');
     $this->assertFileNotExists($file2, 'File2 removed');
     $this->assertFileExists($file3, 'File3 still exists');
     $this->assertFileNotExists($file4, 'File4 removed');
     $this->assertFileNotExists($file5, 'File5 removed');
     $this->assertFileNotExists($dir1, 'Dir1 removed');
     $this->assertFileNotExists($dir2, 'Dir2 removed');
     $this->assertFileExists($dir3, 'Dir3 still exists');
 }