/** * generateDirectoryStructure * * @param $destDir * @param array $dirs * @return $this */ public function generateDirectoryStructure($destDir, array $dirs = []) { foreach ($dirs as $dirPath) { $dirPath = Path::join($destDir, $dirPath); if (!$this->files->exists($dirPath)) { $this->files->makeDirectory($dirPath, 0755, true); } } return $this; }
public function testMirrorCopiesFilesAndDirectoriesRecursively() { $sourcePath = $this->workspace . DIRECTORY_SEPARATOR . 'source' . DIRECTORY_SEPARATOR; $directory = $sourcePath . 'directory' . DIRECTORY_SEPARATOR; $file1 = $directory . 'file1'; $file2 = $sourcePath . 'file2'; mkdir($sourcePath); mkdir($directory); file_put_contents($file1, 'FILE1'); file_put_contents($file2, 'FILE2'); $targetPath = $this->workspace . DIRECTORY_SEPARATOR . 'target' . DIRECTORY_SEPARATOR; $this->filesystem->mirror($sourcePath, $targetPath); $this->assertTrue(is_dir($targetPath)); $this->assertTrue(is_dir($targetPath . 'directory')); $this->assertFileEquals($file1, $targetPath . 'directory' . DIRECTORY_SEPARATOR . 'file1'); $this->assertFileEquals($file2, $targetPath . 'file2'); $this->filesystem->remove($file1); $this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => false)); $this->assertTrue($this->filesystem->exists($targetPath . 'directory' . DIRECTORY_SEPARATOR . 'file1')); $this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => true)); $this->assertFalse($this->filesystem->exists($targetPath . 'directory' . DIRECTORY_SEPARATOR . 'file1')); file_put_contents($file1, 'FILE1'); $this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => true)); $this->assertTrue($this->filesystem->exists($targetPath . 'directory' . DIRECTORY_SEPARATOR . 'file1')); $this->filesystem->remove($directory); $this->filesystem->mirror($sourcePath, $targetPath, null, array('delete' => true)); $this->assertFalse($this->filesystem->exists($targetPath . 'directory')); $this->assertFalse($this->filesystem->exists($targetPath . 'directory' . DIRECTORY_SEPARATOR . 'file1')); }