23
23
+----------------------------------------------------------------------+
24
24
*/
25
25
26
- /* $Id$ */
27
-
28
26
/* Temporary variables while this file is being refactored. */
29
27
/** @var ?JUnit */
30
28
$ junit = null ;
@@ -735,9 +733,9 @@ function main(): void
735
733
} else {
736
734
// Compile a list of all test files (*.phpt).
737
735
$ 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 = [] ;
741
739
sort ($ exts_to_test );
742
740
$ test_dirs = [];
743
741
$ optionals = ['Zend ' , 'tests ' , 'ext ' , 'sapi ' ];
@@ -748,11 +746,6 @@ function main(): void
748
746
}
749
747
}
750
748
751
- // Convert extension names to lowercase
752
- foreach ($ exts_to_test as $ key => $ val ) {
753
- $ exts_to_test [$ key ] = strtolower ($ val );
754
- }
755
-
756
749
foreach ($ test_dirs as $ dir ) {
757
750
find_files (TEST_PHP_SRCDIR . "/ {$ dir }" , $ dir == 'ext ' );
758
751
}
@@ -880,20 +873,19 @@ function write_information(): void
880
873
// load list of enabled and loadable extensions
881
874
save_text ($ info_file , <<<'PHP'
882
875
<?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' );
885
878
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
+ }
892
883
}
893
884
}
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 ));
897
889
// check for extensions that need special handling and regenerate
898
890
$ info_params_ex = [
899
891
'session ' => ['session.auto_start=0 ' ],
@@ -1051,9 +1043,9 @@ function find_files(string $dir, bool $is_ext_dir = false, bool $ignore = false)
1051
1043
1052
1044
while (($ name = readdir ($ o )) !== false ) {
1053
1045
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 ));
1055
1047
if ($ skip_ext ) {
1056
- $ exts_skipped++ ;
1048
+ $ exts_skipped[] = $ name ;
1057
1049
}
1058
1050
find_files ("{$ dir }/ {$ name }" , false , $ ignore || $ skip_ext );
1059
1051
}
@@ -1068,10 +1060,10 @@ function find_files(string $dir, bool $is_ext_dir = false, bool $ignore = false)
1068
1060
// (but not those starting with a dot, which are hidden on
1069
1061
// many platforms)
1070
1062
if (substr ($ name , -5 ) == '.phpt ' && substr ($ name , 0 , 1 ) !== '. ' ) {
1063
+ $ testfile = realpath ("{$ dir }/ {$ name }" );
1071
1064
if ($ ignore ) {
1072
- $ ignored_by_ext++ ;
1065
+ $ ignored_by_ext[] = $ testfile ;
1073
1066
} else {
1074
- $ testfile = realpath ("{$ dir }/ {$ name }" );
1075
1067
$ test_files [] = $ testfile ;
1076
1068
}
1077
1069
}
@@ -2026,7 +2018,7 @@ function run_test(string $php, $file, array $env): string
2026
2018
$ ext_prefix = IS_WINDOWS ? "php_ " : "" ;
2027
2019
$ missing = [];
2028
2020
foreach ($ extensions as $ req_ext ) {
2029
- if (!in_array (strtolower ( $ req_ext) , $ loaded )) {
2021
+ if (!in_array ($ req_ext , $ loaded, true )) {
2030
2022
if ($ req_ext == 'opcache ' || $ req_ext == 'xdebug ' ) {
2031
2023
$ ext_file = $ ext_dir . DIRECTORY_SEPARATOR . $ ext_prefix . $ req_ext . '. ' . PHP_SHLIB_SUFFIX ;
2032
2024
$ ini_settings ['zend_extension ' ][] = $ ext_file ;
@@ -2785,6 +2777,22 @@ function run_test(string $php, $file, array $env): string
2785
2777
return $ restype [0 ] . 'ED ' ;
2786
2778
}
2787
2779
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
+
2788
2796
/**
2789
2797
* @return bool|int
2790
2798
*/
@@ -3042,7 +3050,7 @@ function compute_summary(): void
3042
3050
global $ n_total , $ test_results , $ ignored_by_ext , $ sum_results , $ percent_results ;
3043
3051
3044
3052
$ n_total = count ($ test_results );
3045
- $ n_total += $ ignored_by_ext ;
3053
+ $ n_total += count ( $ ignored_by_ext) ;
3046
3054
$ sum_results = [
3047
3055
'PASSED ' => 0 ,
3048
3056
'WARNED ' => 0 ,
@@ -3058,7 +3066,7 @@ function compute_summary(): void
3058
3066
$ sum_results [$ v ]++;
3059
3067
}
3060
3068
3061
- $ sum_results ['SKIPPED ' ] += $ ignored_by_ext ;
3069
+ $ sum_results ['SKIPPED ' ] += count ( $ ignored_by_ext) ;
3062
3070
$ percent_results = [];
3063
3071
3064
3072
foreach ($ sum_results as $ v => $ n ) {
@@ -3090,43 +3098,43 @@ function get_summary(bool $show_ext_summary): string
3090
3098
=====================================================================
3091
3099
TEST RESULT SUMMARY
3092
3100
---------------------------------------------------------------------
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) ) . '
3095
3103
---------------------------------------------------------------------
3096
3104
' ;
3097
3105
}
3098
3106
3099
3107
$ 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 );
3101
3109
3102
3110
if ($ sum_results ['BORKED ' ]) {
3103
3111
$ 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 ' ]) . ' -------- ' ;
3105
3113
}
3106
3114
3107
3115
$ 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 );
3111
3119
3112
3120
if ($ sum_results ['XFAILED ' ]) {
3113
3121
$ 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 );
3115
3123
}
3116
3124
3117
3125
if ($ valgrind ) {
3118
3126
$ 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 );
3120
3128
if ($ sum_results ['XLEAKED ' ]) {
3121
3129
$ 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 );
3123
3131
}
3124
3132
}
3125
3133
3126
3134
$ 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 ) . '
3128
3136
---------------------------------------------------------------------
3129
- Time taken : ' . sprintf ('%4d seconds ' , $ end_time - $ start_time ) . '
3137
+ Time taken : ' . sprintf ('%5d seconds ' , $ end_time - $ start_time ) . '
3130
3138
=====================================================================
3131
3139
' ;
3132
3140
$ failed_test_summary = '' ;
@@ -3682,11 +3690,8 @@ public function getExtensions(string $php): array
3682
3690
}
3683
3691
3684
3692
$ 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 );
3690
3695
3691
3696
$ result = [$ extDir , $ extensions ];
3692
3697
$ this ->extensions [$ php ] = $ result ;
0 commit comments