/** * @covers ::setOutput * @covers ::addFile * @covers ::closeArchive */ public function testUnArchiveFiles() { $output_file = tempnam('/tmp', 'test'); $file = new WritableStreamBackupFile($output_file); $this->archiver->setArchive($file); $file_names = array_keys($this->file_list); foreach ($file_names as $filename) { $this->archiver->addFile('vfs://root/files/' . $filename, $filename); } $this->archiver->closeArchive(); $output_dir = tempnam(sys_get_temp_dir(), ''); if (file_exists($output_dir)) { unlink($output_dir); } mkdir($output_dir); $this->reader->setArchive($file); $this->reader->extractTo($output_dir); // Recursively read the output directory. $objects = new RecursiveDirectoryIterator($output_dir, FilesystemIterator::SKIP_DOTS); $file_list = []; foreach (new RecursiveIteratorIterator($objects) as $filename => $cur) { $file_list[] = substr($filename, strlen($output_dir) + 1); } sort($file_names); sort($file_list); // Make sure the files all exist with the correct names. $this->assertEquals($file_names, $file_list); foreach ($this->file_list as $file_name => $contents) { $output = file_get_contents($output_dir . '/' . $file_name); $this->assertEquals($contents, $output); } }
/** * @covers ::setOutput * @covers ::addFile * @covers ::closeArchive */ public function testArchiveFiles() { $output_file = tempnam('/tmp', 'test'); $file = new WritableStreamBackupFile($output_file); $this->archiver->setArchive($file); $file_names = array_keys($this->file_list); foreach ($file_names as $filename) { $this->archiver->addFile('vfs://root/files/' . $filename, $filename); } $this->archiver->closeArchive(); $tar_list = null; exec('tar tf ' . $output_file, $tar_list); // Make sure the files all exist with the correct names. $this->assertEquals($file_names, $tar_list); foreach ($this->file_list as $file_name => $contents) { $output = null; $output = exec('tar xfO ' . $output_file . ' ' . $file_name); $this->assertEquals($contents, $output); } }