File tree Expand file tree Collapse file tree 3 files changed +40
-24
lines changed Expand file tree Collapse file tree 3 files changed +40
-24
lines changed Original file line number Diff line number Diff line change 22require __DIR__ . '/generate_unserialize_dict.php ' ;
33require __DIR__ . '/generate_unserializehash_corpus.php ' ;
44require __DIR__ . '/generate_parser_corpus.php ' ;
5- require __DIR__ . '/generate_execute_corpus.php ' ;
5+
6+ require __DIR__ . '/generate_corpus_util.php ' ;
7+
8+ $ baseDir = __DIR__ . '/../.. ' ;
9+ generate_corpus_from_phpt (
10+ __DIR__ . '/corpus/execute ' ,
11+ ["$ baseDir/Zend/tests " , "$ baseDir/ext/reflection " ]
12+ );
13+ generate_corpus_from_phpt (
14+ __DIR__ . '/corpus/function-jit ' ,
15+ ["$ baseDir/Zend/tests " , "$ baseDir/ext/opcache/tests/jit " ]
16+ );
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ function generate_corpus_from_phpt (string $ corpusDir , array $ testDirs , int $ maxLen = 8 * 1024 ) {
4+ @mkdir ($ corpusDir );
5+ foreach ($ testDirs as $ testDir ) {
6+ $ it = new RecursiveIteratorIterator (
7+ new RecursiveDirectoryIterator ($ testDir ),
8+ RecursiveIteratorIterator::LEAVES_ONLY
9+ );
10+
11+ foreach ($ it as $ file ) {
12+ if (!preg_match ('/\.phpt$/ ' , $ file )) continue ;
13+ $ fullCode = file_get_contents ($ file );
14+ if (!preg_match ('/--FILE--\R(.*?)\R--([_A-Z]+)--/s ' , $ fullCode , $ matches )) continue ;
15+ $ code = $ matches [1 ];
16+ if (strlen ($ code ) > $ maxLen ) continue ;
17+
18+ $ outFile = str_replace ($ testDir , '' , $ file );
19+ $ outFile = str_replace ('/ ' , '_ ' , $ outFile );
20+ if (!preg_match ('/SKIP_SLOW_TESTS|SKIP_PERF_SENSITIVE|USE_ZEND_ALLOC/ ' , $ fullCode )) {
21+ file_put_contents ($ corpusDir . '/ ' . $ outFile , $ code );
22+ }
23+ }
24+ }
25+ }
Original file line number Diff line number Diff line change 11<?php
22
3+ require __DIR__ . '/generate_corpus_util.php ' ;
4+
35if ($ argc >= 2 ) {
46 $ corpusDir = $ argv [1 ];
57} else {
1214 $ testDirs = ["$ baseDir/Zend/tests " , "$ baseDir/ext/reflection " ];
1315}
1416
15- $ maxLen = 8 * 1024 ;
16- @mkdir ($ corpusDir );
17-
18- foreach ($ testDirs as $ testDir ) {
19- $ it = new RecursiveIteratorIterator (
20- new RecursiveDirectoryIterator ($ testDir ),
21- RecursiveIteratorIterator::LEAVES_ONLY
22- );
23-
24- foreach ($ it as $ file ) {
25- if (!preg_match ('/\.phpt$/ ' , $ file )) continue ;
26- $ fullCode = file_get_contents ($ file );
27- if (!preg_match ('/--FILE--\R(.*?)\R--([_A-Z]+)--/s ' , $ fullCode , $ matches )) continue ;
28- $ code = $ matches [1 ];
29- if (strlen ($ code ) > $ maxLen ) continue ;
30-
31- $ outFile = str_replace ($ testDir , '' , $ file );
32- $ outFile = str_replace ('/ ' , '_ ' , $ outFile );
33- if (!preg_match ('/SKIP_SLOW_TESTS|SKIP_PERF_SENSITIVE|USE_ZEND_ALLOC/ ' , $ fullCode )) {
34- file_put_contents ($ corpusDir . '/ ' . $ outFile , $ code );
35- }
36- }
37- }
17+ generate_corpus_from_phpt ($ corpusDir , $ testDirs );
You can’t perform that action at this time.
0 commit comments