<?php $I = new CliGuy($scenario); $I->wantTo('archive directory and then extract it again with Archive and Extract tasks'); $I->amInPath(codecept_data_dir() . 'sandbox'); $I->seeDirFound('some/deeply/nested'); $I->seeFileFound('structu.re', 'some/deeply/nested'); $I->seeFileFound('existing_file', 'some/deeply'); // Test a bunch of archive types that we support foreach (['zip', 'tar', 'tar.gz', 'tar.bz2', 'tgz'] as $archiveType) { // First, take everything from the folder 'some/deeply' and make // an archive for it located in 'deep' $I->taskPack("deeply.{$archiveType}")->add(['deep' => 'some/deeply'])->run(); $I->seeFileFound("deeply.{$archiveType}"); // We are next going to extract the archive we created, this time // putting it into a folder called "extracted-$archiveType" (different // for each archive type we test). We rely on the default behavior // of our extractor to remove the top-level directory in the archive // ("deeply"). $I->taskExtract("deeply.{$archiveType}")->to("extracted-{$archiveType}")->preserveTopDirectory(false)->run(); $I->seeDirFound("extracted-{$archiveType}"); $I->seeDirFound("extracted-{$archiveType}/nested"); $I->seeFileFound('structu.re', "extracted-{$archiveType}/nested"); // Next, we'll extract the same archive again, this time preserving // the top-level folder. $I->taskExtract("deeply.{$archiveType}")->to("preserved-{$archiveType}")->preserveTopDirectory()->run(); $I->seeDirFound("preserved-{$archiveType}"); $I->seeDirFound("preserved-{$archiveType}/deep/nested"); $I->seeFileFound('structu.re', "preserved-{$archiveType}/deep/nested"); // Make another archive, this time composed of fanciful locations $I->taskPack("composed.{$archiveType}")->add(['a/b/existing_file' => 'some/deeply/existing_file'])->add(['x/y/z/structu.re' => 'some/deeply/nested/structu.re'])->run();