/** * @dataProvider provideTestDirs */ public function testAddDir($dirname, $expected_result, $manipulate, $zipContentsOnly = false) { # Create new archive $archive = '/tmp/archive.zip'; $zip = new ZipArchiveEx(); $zip->open($archive, ZIPARCHIVE::OVERWRITE); # Try to add directory: if ($zipContentsOnly) { $result = $zip->addDirContents($dirname); } else { $result = $zip->addDir($dirname); } $this->assertEquals($expected_result, $result); # Close archive: $zip->close(); # If directory was added successfully if ($result) { # Remove extracted testdirectory from # former testruns: $extractionDir = self::$tmpDir . '/' . basename($dirname); FileSystemManager::rrmdir($extractionDir); # Extract directory $output = array(); # -u Option forces update of already existing files, # importang for testing on travis-ci.org! $extractTo = $zipContentsOnly ? $extractionDir : self::$tmpDir; exec('unzip -u ' . $archive . ' -d ' . $extractTo, $output, $result); $this->assertEquals(0, $result); # 0 = successfull # $manipulate holds the file to manipulate, # so the following assertion fails. if ($manipulate) { file_put_contents($extractionDir . '/' . $manipulate, 'Lorem ipsum dolor sit amet.'); $expected_result = 1; } else { $expected_result = 0; } # Compare extracted directory and original one exec('diff -arq ' . $dirname . ' ' . $extractionDir, $output, $result); LogMore::debug('Output of diff-command: %s', implode(PHP_EOL, $output)); LogMore::debug('Expecting %d, got: %d', $expected_result, $result); $this->assertEquals($expected_result, $result); } }
/** * Function: parseFile * * Returns: * * The pretty-printed PHP code */ private function parseFile($file) { LogMore::debug('parsing file %s', $file); $statements = file_get_contents($file); # Create Parser $parser = new PHPParser_Parser(new PHPParser_Lexer()); # Create syntax tree $syntax_tree = $parser->parse($statements); LogMore::debug('Syntax tree parsed'); # Pretty print syntax tree/convert syntax tree back to PHP statements: return $this->prettyPrint($syntax_tree); }
<?php function foo() { echo 'foo', PHP_EOL; } # Project to test the filtering/replacing of function calls: foo(); LogMore::debug('Yuhu');
/** * Function: recursiveAddDir * * Recursively adds the passed directory and all files * and folders beneath it. * * Parameters: * * $dirname - The directory to add. * $basedir - The basedir where $dirname resides. * $adddir - Add the basedir as directory itself * to the zipfile? * * Returns: * * TRUE on success or FALSE on failure. */ private function recursiveAddDir($dirname, $basedir = null, $adddir = true) { LogMore::debug('In recursiveAddDir'); $rc = false; # If $dirname is a directory if (is_dir($dirname)) { LogMore::debug('Is a directory: %s', $dirname); # Save current working directory $working_directory = getcwd(); # Switch to passed directory chdir($dirname); # Get basename of passed directory $basename = $basedir . basename($dirname); # Add empty directory with the name of the passed directory if ($adddir) { LogMore::debug('Add empty dir %s', $basename); $rc = $this->addEmptyDir($basename); LogMore::debug('RC: %d', $rc); $basename = $basename . '/'; } else { $basename = null; } # Get all files in the directory $files = glob('*'); LogMore::debug('Number of files in %s: %d', $basename, sizeof($files)); # Loop through files foreach ($files as $f) { # If file is directory if (is_dir($f)) { # Call recursiveAdd LogMore::debug('Add dir %s', $f); $this->recursiveAddDir($f, $basename); } else { LogMore::debug('Add file %s', $basename . $f); $rc = $this->addFile($f, $basename . $f); LogMore::debug('RC: %d', $rc); } } # Switch back to current working directory chdir($working_directory); $rc = true; } return $rc; }
private function switchDirectory($newDirectory) { LogMore::debug('attempt to switch directory: %s', $newDirectory); $masterDirectory = null; if ($newDirectory && $newDirectory != '.') { LogMore::debug('switching to directory %s', $newDirectory); $masterDirectory = getcwd(); $rc = chdir($newDirectory); if ($rc) { LogMore::debug('directory switching attempt successfull; masterdir: %s', $masterDirectory); } } return $masterDirectory; }