2323 +----------------------------------------------------------------------+
2424 */
2525
26- /* $Id$ */
27-
2826/* Temporary variables while this file is being refactored. */
2927/** @var ?JUnit */
3028$ junit = null ;
@@ -735,9 +733,9 @@ function main(): void
735733 } else {
736734 // Compile a list of all test files (*.phpt).
737735 $ test_files = [];
738- $ exts_tested = count ( $ exts_to_test) ;
739- $ exts_skipped = 0 ;
740- $ ignored_by_ext = 0 ;
736+ $ exts_tested = $ exts_to_test ;
737+ $ exts_skipped = [] ;
738+ $ ignored_by_ext = [] ;
741739 sort ($ exts_to_test );
742740 $ test_dirs = [];
743741 $ optionals = ['Zend ' , 'tests ' , 'ext ' , 'sapi ' ];
@@ -748,11 +746,6 @@ function main(): void
748746 }
749747 }
750748
751- // Convert extension names to lowercase
752- foreach ($ exts_to_test as $ key => $ val ) {
753- $ exts_to_test [$ key ] = strtolower ($ val );
754- }
755-
756749 foreach ($ test_dirs as $ dir ) {
757750 find_files (TEST_PHP_SRCDIR . "/ {$ dir }" , $ dir == 'ext ' );
758751 }
@@ -880,20 +873,19 @@ function write_information(): void
880873 // load list of enabled and loadable extensions
881874 save_text ($ info_file , <<<'PHP'
882875 <?php
883- echo str_replace("Zend OPcache", "opcache", implode(",", get_loaded_extensions()) );
884- $ext_dir = ini_get(" extension_dir" );
876+ $exts = get_loaded_extensions();
877+ $ext_dir = ini_get(' extension_dir' );
885878 foreach (scandir($ext_dir) as $file) {
886- if (!preg_match('/^(?:php_)?([_a-zA-Z0-9]+)\.(?:so|dll)$/', $file, $matches)) {
887- continue;
888- }
889- $ext = $matches[1];
890- if (!extension_loaded($ext) && @dl($file)) {
891- echo ",", $ext;
879+ if (preg_match('/^(?:php_)?([_a-zA-Z0-9]+)\.(?:so|dll)$/', $file, $matches)) {
880+ if (!extension_loaded($matches[1]) && @dl($matches[1])) {
881+ $exts[] = $matches[1];
882+ }
892883 }
893884 }
894- ?>
895- PHP);
896- $ exts_to_test = explode (', ' , shell_exec ("$ php $ pass_options $ info_params $ no_file_cache \"$ info_file \"" ));
885+ echo implode(',', $exts);
886+ PHP);
887+ $ extensionsNames = explode (', ' , shell_exec ("$ php $ pass_options $ info_params $ no_file_cache \"$ info_file \"" ));
888+ $ exts_to_test = array_unique (remap_loaded_extensions_names ($ extensionsNames ));
897889 // check for extensions that need special handling and regenerate
898890 $ info_params_ex = [
899891 'session ' => ['session.auto_start=0 ' ],
@@ -1051,9 +1043,9 @@ function find_files(string $dir, bool $is_ext_dir = false, bool $ignore = false)
10511043
10521044 while (($ name = readdir ($ o )) !== false ) {
10531045 if (is_dir ("{$ dir }/ {$ name }" ) && !in_array ($ name , ['. ' , '.. ' , '.svn ' ])) {
1054- $ skip_ext = ($ is_ext_dir && !in_array (strtolower ( $ name) , $ exts_to_test ));
1046+ $ skip_ext = ($ is_ext_dir && !in_array ($ name , $ exts_to_test ));
10551047 if ($ skip_ext ) {
1056- $ exts_skipped++ ;
1048+ $ exts_skipped[] = $ name ;
10571049 }
10581050 find_files ("{$ dir }/ {$ name }" , false , $ ignore || $ skip_ext );
10591051 }
@@ -1068,10 +1060,10 @@ function find_files(string $dir, bool $is_ext_dir = false, bool $ignore = false)
10681060 // (but not those starting with a dot, which are hidden on
10691061 // many platforms)
10701062 if (substr ($ name , -5 ) == '.phpt ' && substr ($ name , 0 , 1 ) !== '. ' ) {
1063+ $ testfile = realpath ("{$ dir }/ {$ name }" );
10711064 if ($ ignore ) {
1072- $ ignored_by_ext++ ;
1065+ $ ignored_by_ext[] = $ testfile ;
10731066 } else {
1074- $ testfile = realpath ("{$ dir }/ {$ name }" );
10751067 $ test_files [] = $ testfile ;
10761068 }
10771069 }
@@ -2026,7 +2018,7 @@ function run_test(string $php, $file, array $env): string
20262018 $ ext_prefix = IS_WINDOWS ? "php_ " : "" ;
20272019 $ missing = [];
20282020 foreach ($ extensions as $ req_ext ) {
2029- if (!in_array (strtolower ( $ req_ext) , $ loaded )) {
2021+ if (!in_array ($ req_ext , $ loaded, true )) {
20302022 if ($ req_ext == 'opcache ' || $ req_ext == 'xdebug ' ) {
20312023 $ ext_file = $ ext_dir . DIRECTORY_SEPARATOR . $ ext_prefix . $ req_ext . '. ' . PHP_SHLIB_SUFFIX ;
20322024 $ ini_settings ['zend_extension ' ][] = $ ext_file ;
@@ -2785,6 +2777,22 @@ function run_test(string $php, $file, array $env): string
27852777 return $ restype [0 ] . 'ED ' ;
27862778}
27872779
2780+ /**
2781+ * Map "Zend OPcache" to "opcache" and convert all ext names to lowercase.
2782+ */
2783+ function remap_loaded_extensions_names (array $ names ): array
2784+ {
2785+ $ exts = [];
2786+ foreach ($ names as $ name ) {
2787+ if ($ name === 'Core ' ) {
2788+ continue ;
2789+ }
2790+ $ exts [] = ['Zend OPcache ' => 'opcache ' ][$ name ] ?? strtolower ($ name );
2791+ }
2792+
2793+ return $ exts ;
2794+ }
2795+
27882796/**
27892797 * @return bool|int
27902798 */
@@ -3042,7 +3050,7 @@ function compute_summary(): void
30423050 global $ n_total , $ test_results , $ ignored_by_ext , $ sum_results , $ percent_results ;
30433051
30443052 $ n_total = count ($ test_results );
3045- $ n_total += $ ignored_by_ext ;
3053+ $ n_total += count ( $ ignored_by_ext) ;
30463054 $ sum_results = [
30473055 'PASSED ' => 0 ,
30483056 'WARNED ' => 0 ,
@@ -3058,7 +3066,7 @@ function compute_summary(): void
30583066 $ sum_results [$ v ]++;
30593067 }
30603068
3061- $ sum_results ['SKIPPED ' ] += $ ignored_by_ext ;
3069+ $ sum_results ['SKIPPED ' ] += count ( $ ignored_by_ext) ;
30623070 $ percent_results = [];
30633071
30643072 foreach ($ sum_results as $ v => $ n ) {
@@ -3090,43 +3098,43 @@ function get_summary(bool $show_ext_summary): string
30903098=====================================================================
30913099TEST RESULT SUMMARY
30923100---------------------------------------------------------------------
3093- Exts skipped : ' . sprintf ('%4d ' , $ exts_skipped ) . '
3094- Exts tested : ' . sprintf ('%4d ' , $ exts_tested ) . '
3101+ Exts skipped : ' . sprintf ('%5d ' , count ( $ exts_skipped)) . ( $ exts_skipped ? ' ( ' . implode ( ' , ' , $ exts_skipped ) . ' ) ' : '' ) . '
3102+ Exts tested : ' . sprintf ('%5d ' , count ( $ exts_tested) ) . '
30953103---------------------------------------------------------------------
30963104 ' ;
30973105 }
30983106
30993107 $ summary .= '
3100- Number of tests : ' . sprintf ('%4d ' , $ n_total ) . ' ' . sprintf ('%8d ' , $ x_total );
3108+ Number of tests : ' . sprintf ('%5d ' , $ n_total ) . ' ' . sprintf ('%8d ' , $ x_total );
31013109
31023110 if ($ sum_results ['BORKED ' ]) {
31033111 $ summary .= '
3104- Tests borked : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['BORKED ' ], $ percent_results ['BORKED ' ]) . ' -------- ' ;
3112+ Tests borked : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['BORKED ' ], $ percent_results ['BORKED ' ]) . ' -------- ' ;
31053113 }
31063114
31073115 $ summary .= '
3108- Tests skipped : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['SKIPPED ' ], $ percent_results ['SKIPPED ' ]) . ' --------
3109- Tests warned : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['WARNED ' ], $ percent_results ['WARNED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_warned ) . '
3110- Tests failed : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['FAILED ' ], $ percent_results ['FAILED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_failed );
3116+ Tests skipped : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['SKIPPED ' ], $ percent_results ['SKIPPED ' ]) . ' --------
3117+ Tests warned : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['WARNED ' ], $ percent_results ['WARNED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_warned ) . '
3118+ Tests failed : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['FAILED ' ], $ percent_results ['FAILED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_failed );
31113119
31123120 if ($ sum_results ['XFAILED ' ]) {
31133121 $ summary .= '
3114- Expected fail : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['XFAILED ' ], $ percent_results ['XFAILED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_xfailed );
3122+ Expected fail : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['XFAILED ' ], $ percent_results ['XFAILED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_xfailed );
31153123 }
31163124
31173125 if ($ valgrind ) {
31183126 $ summary .= '
3119- Tests leaked : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['LEAKED ' ], $ percent_results ['LEAKED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_leaked );
3127+ Tests leaked : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['LEAKED ' ], $ percent_results ['LEAKED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_leaked );
31203128 if ($ sum_results ['XLEAKED ' ]) {
31213129 $ summary .= '
3122- Expected leak : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['XLEAKED ' ], $ percent_results ['XLEAKED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_xleaked );
3130+ Expected leak : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['XLEAKED ' ], $ percent_results ['XLEAKED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_xleaked );
31233131 }
31243132 }
31253133
31263134 $ summary .= '
3127- Tests passed : ' . sprintf ('%4d (%5.1f%%) ' , $ sum_results ['PASSED ' ], $ percent_results ['PASSED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_passed ) . '
3135+ Tests passed : ' . sprintf ('%5d (%5.1f%%) ' , $ sum_results ['PASSED ' ], $ percent_results ['PASSED ' ]) . ' ' . sprintf ('(%5.1f%%) ' , $ x_passed ) . '
31283136---------------------------------------------------------------------
3129- Time taken : ' . sprintf ('%4d seconds ' , $ end_time - $ start_time ) . '
3137+ Time taken : ' . sprintf ('%5d seconds ' , $ end_time - $ start_time ) . '
31303138=====================================================================
31313139 ' ;
31323140 $ failed_test_summary = '' ;
@@ -3682,11 +3690,8 @@ public function getExtensions(string $php): array
36823690 }
36833691
36843692 $ extDir = shell_exec ("$ php -d display_errors=0 -r \"echo ini_get('extension_dir'); \"" );
3685- $ extensions = explode (", " , shell_exec ("$ php -d display_errors=0 -r \"echo implode(',', get_loaded_extensions()); \"" ));
3686- $ extensions = array_map ('strtolower ' , $ extensions );
3687- if (in_array ('zend opcache ' , $ extensions )) {
3688- $ extensions [] = 'opcache ' ;
3689- }
3693+ $ extensionsNames = explode (", " , shell_exec ("$ php -d display_errors=0 -r \"echo implode(',', get_loaded_extensions()); \"" ));
3694+ $ extensions = remap_loaded_extensions_names ($ extensionsNames );
36903695
36913696 $ result = [$ extDir , $ extensions ];
36923697 $ this ->extensions [$ php ] = $ result ;
0 commit comments