Root/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <?php abstract class PHPParser_Tests_CodeTestAbstract extends PHPUnit_Framework_TestCase { protected function getTests( $directory , $fileExtension ) { $it = new RecursiveDirectoryIterator( $directory ); $it = new RecursiveIteratorIterator( $it , RecursiveIteratorIterator::LEAVES_ONLY); $it = new RegexIterator( $it , '(\.' . preg_quote( $fileExtension ) . '$)' ); $tests = array (); foreach ( $it as $file ) { // read file $fileContents = file_get_contents ( $file ); // evaluate @@{expr}@@ expressions $fileContents = preg_replace_callback( '/@@\{(.*?)\}@@/' , array ( $this , 'evalCallback' ), $fileContents ); // parse sections $parts = array_map ( 'trim' , explode ( '-----' , $fileContents )); // first part is the name $name = array_shift ( $parts ); // multiple sections possible with always two forming a pair foreach ( array_chunk ( $parts , 2) as $chunk ) { $tests [] = array ( $name , $chunk [0], $chunk [1]); } } return $tests ; } protected function evalCallback( $matches ) { return eval ( 'return ' . $matches [1] . ';' ); } protected function canonicalize( $str ) { // trim from both sides $str = trim( $str ); // normalize EOL to \n $str = str_replace ( array ( "\r\n" , "\r" ), "\n" , $str ); // trim right side of all lines return implode( "\n" , array_map ( 'rtrim' , explode ( "\n" , $str ))); } } |