]> granicus.if.org Git - php/commitdiff
Add --file-cache-prime/use options to run-tests
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 20 May 2020 08:04:57 +0000 (10:04 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 20 May 2020 13:29:32 +0000 (15:29 +0200)
--file-cache-prime populates the file cache,
--file-cache-use uses the file cache.

And fix a number of tests to run under file cache or disabled
timestamp validation.

14 files changed:
ext/ffi/tests/300.phpt
ext/phar/tests/create_new_and_modify.phpt
ext/phar/tests/delete_in_phar.phpt
ext/phar/tests/delete_in_phar_confirm.phpt
ext/phar/tests/front.phar.phpt
ext/phar/tests/tar/create_new_and_modify.phpt
ext/phar/tests/tar/delete_in_phar.phpt
ext/phar/tests/tar/delete_in_phar_confirm.phpt
ext/phar/tests/tar/tar_004.phpt
ext/phar/tests/zip/create_new_and_modify.phpt
ext/phar/tests/zip/delete_in_phar.phpt
ext/phar/tests/zip/delete_in_phar_confirm.phpt
run-tests.php
sapi/phpdbg/tests/info_001.phpt

index 8cf68736be46d565372b440f91be4b3ff28e1c34..fd8149802666988ab485a7d549dd01a27e80d69c 100644 (file)
@@ -10,6 +10,7 @@ opcache.enable=1
 opcache.enable_cli=1
 opcache.optimization_level=-1
 opcache.preload={PWD}/preload.inc
+opcache.file_cache_only=0
 --FILE--
 <?php
 $ffi = FFI::scope("TEST_300");
index 738efb797f694a16a308b7ce2873512d5eceaf53..ed01a631226657458167108fedc80e7bbd3169e1 100644 (file)
@@ -5,6 +5,7 @@ Phar: create and modify phar
 --INI--
 phar.readonly=0
 phar.require_hash=1
+opcache.validate_timestamps=1
 --FILE--
 <?php
 
index 4cf2f3b4398e8d62ae9087493c4d44917fcc04c0..d58ce21a9d051b71da9d32d4d0107af76ee81df7 100644 (file)
@@ -5,6 +5,7 @@ Phar: delete a file within a .phar
 --INI--
 phar.readonly=0
 phar.require_hash=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 $fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php';
index 90401bb5cc7c4e85413edbed2a3db17e717262eb..b4acf6aa4690c4e8a612cfb350ab633eb95d773f 100644 (file)
@@ -5,6 +5,7 @@ Phar: delete a file within a .phar (confirm disk file is changed)
 --INI--
 phar.readonly=0
 phar.require_hash=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 $fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php';
index bab8ada0fdd357b9e18361a291ce2c2eabf3b269..8763c8801f267b3071db2c3cb1aaa90058c0ff5f 100644 (file)
@@ -2,6 +2,7 @@
 Phar front controller with mounted external file
 --INI--
 default_charset=UTF-8
+opcache.validate_timestamps=1
 --SKIPIF--
 <?php if (!extension_loaded("phar")) die("skip"); ?>
 --ENV--
index 355b69399eddf3c006a427534a783ed4a15dd801..75cb537aa828ba78c603c9e1deec5d32eec68043 100644 (file)
@@ -4,6 +4,7 @@ Phar: create and modify tar-based phar
 <?php if (!extension_loaded("phar")) die("skip"); ?>
 --INI--
 phar.readonly=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 
index 948260b385ce0c29fc9cbbe3edd2c64ee9f41f4e..9d8f6cb456288522175704e9fa23459741294d8e 100644 (file)
@@ -5,6 +5,7 @@ Phar: delete a file within a tar-based .phar
 --INI--
 phar.readonly=0
 phar.require_hash=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 
index 762ed508da5871bf6353a5362316801641ba8f6d..a8ef7d319607bf870f3ce205a764b3df8981fab0 100644 (file)
@@ -5,6 +5,7 @@ Phar: delete a file within a tar-based .phar (confirm disk file is changed)
 --INI--
 phar.readonly=0
 phar.require_hash=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 
index 54db6bede2c68164e888b62ba0c1f2ceba193016..5fbe16f069bd9f25112764419d01ceb271865509 100644 (file)
@@ -7,6 +7,7 @@ if (!extension_loaded("phar")) die("skip");
 --INI--
 phar.readonly=0
 phar.require_hash=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 include __DIR__ . '/files/tarmaker.php.inc';
index 38cf305525cb170532439d1eeaaee636571c268f..e46e94b3443a2df3beed6a5d3f6e971ffab5a677 100644 (file)
@@ -4,6 +4,7 @@ Phar: create and modify zip-based phar
 <?php if (!extension_loaded("phar")) die("skip"); ?>
 --INI--
 phar.readonly=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 
index 5f5d644470aea449a9582f6caa5ba48f8ae3b0bb..f988fa7f2cfe09bc5ba4e86d63b0223f32a74dde 100644 (file)
@@ -5,6 +5,7 @@ Phar: delete a file within a zip-based .phar
 --INI--
 phar.readonly=0
 phar.require_hash=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 
index 4d2c68720e8d93cf3591c9e07ff19b64e0996cb1..8b80c5f4e72cfbf4350cfa10308b954df17f6468 100644 (file)
@@ -5,6 +5,7 @@ Phar: delete a file within a zip-based .phar (confirm disk file is changed)
 --INI--
 phar.readonly=0
 phar.require_hash=0
+opcache.validate_timestamps=1
 --FILE--
 <?php
 
index 0b7e29e0bc845eaab26a3bd16851dece65782f69..d14fcafeeed24314cb7a95be09465910d1eea37f 100755 (executable)
@@ -144,7 +144,7 @@ function main()
            $repeat, $result_tests_file, $slow_min_ms, $start_time, $switch,
            $temp_source, $temp_target, $temp_urlbase, $test_cnt, $test_dirs,
            $test_files, $test_idx, $test_list, $test_results, $testfile,
-           $user_tests, $valgrind, $sum_results, $shuffle;
+           $user_tests, $valgrind, $sum_results, $shuffle, $file_cache;
     // Parallel testing
     global $workers, $workerID;
 
@@ -396,6 +396,7 @@ NO_PROC_OPEN_ERROR;
     $no_clean = false;
     $slow_min_ms = INF;
     $preload = false;
+    $file_cache = null;
     $shuffle = false;
     $workers = null;
 
@@ -529,6 +530,12 @@ NO_PROC_OPEN_ERROR;
                 case '--preload':
                     $preload = true;
                     break;
+                case '--file-cache-prime':
+                    $file_cache = 'prime';
+                    break;
+                case '--file-cache-use':
+                    $file_cache = 'use';
+                    break;
                 case '--no-clean':
                     $no_clean = true;
                     break;
@@ -708,6 +715,11 @@ NO_PROC_OPEN_ERROR;
             fclose($result_tests_file);
         }
 
+        if (0 == count($test_results)) {
+            echo "No tests were run.\n";
+            return;
+        }
+
         compute_summary();
         if ($html_output) {
             fwrite($html_file, "<hr/>\n" . get_summary(false, true));
@@ -1272,10 +1284,18 @@ function system_with_timeout($commandline, $env = null, $stdin = null, $captureS
 
 function run_all_tests($test_files, $env, $redir_tested = null)
 {
-    global $test_results, $failed_tests_file, $result_tests_file, $php, $test_idx;
+    global $test_results, $failed_tests_file, $result_tests_file, $php, $test_idx, $file_cache;
     // Parallel testing
     global $PHP_FAILED_TESTS, $workers, $workerID, $workerSock;
 
+    if ($file_cache !== null) {
+        /* Automatically skip opcache tests in --file-cache mode,
+         * because opcache generally doesn't expect those to run under file cache */
+        $test_files = array_filter($test_files, function($test) {
+            return !is_string($test) || false === strpos($test, 'ext/opcache');
+        });
+    }
+
     /* Ignore -jN if there is only one file to analyze. */
     if ($workers !== null && count($test_files) > 1 && !$workerID) {
         run_all_tests_parallel($test_files, $env, $redir_tested);
@@ -1763,7 +1783,7 @@ function run_test($php, $file, $env)
     global $SHOW_ONLY_GROUPS;
     global $no_file_cache;
     global $slow_min_ms;
-    global $preload;
+    global $preload, $file_cache;
     // Parallel testing
     global $workerID;
     $temp_filenames = null;
@@ -2087,9 +2107,9 @@ TEST $file
         $ext_params = array();
         settings2array($ini_overwrites, $ext_params);
         $ext_params = settings2params($ext_params);
-        $ext_dir = `$php $pass_options $extra_options $ext_params -d display_errors=0 -r "echo ini_get('extension_dir');"`;
+        $ext_dir = `$php $pass_options $extra_options $ext_params $no_file_cache -d display_errors=0 -r "echo ini_get('extension_dir');"`;
         $extensions = preg_split("/[\n\r]+/", trim($section_text['EXTENSIONS']));
-        $loaded = explode(",", `$php $pass_options $extra_options $ext_params -d display_errors=0 -r "echo implode(',', get_loaded_extensions());"`);
+        $loaded = explode(",", `$php $pass_options $extra_options $ext_params $no_file_cache -d display_errors=0 -r "echo implode(',', get_loaded_extensions());"`);
         $ext_prefix = IS_WINDOWS ? "php_" : "";
         foreach ($extensions as $req_ext) {
             if (!in_array($req_ext, $loaded)) {
@@ -2108,6 +2128,19 @@ TEST $file
 
     $orig_ini_settings = settings2params($ini_settings);
 
+    if ($file_cache !== null) {
+        $ini_settings['opcache.file_cache'] = '/tmp';
+        // Make sure warnings still show up on the second run.
+        $ini_settings['opcache.record_warnings'] = '1';
+        // File cache is currently incompatible with JIT.
+        $ini_settings['opcache.jit'] = '0';
+        if ($file_cache === 'use') {
+            // Disable timestamp validation in order to fetch from file cache,
+            // even though all the files are re-created.
+            $ini_settings['opcache.validate_timestamps'] = '0';
+        }
+    }
+
     // Any special ini settings
     // these may overwrite the test defaults...
     if (array_key_exists('INI', $section_text)) {
index 2f38fd36af6b1efdd5e44d0494a4e8e4c72a38f2..28078557095d619540a6abfecc7ae9153f550163 100644 (file)
@@ -48,7 +48,7 @@ prompt> ------------------------------------------------
 Function Breakpoints:
 #0             foo
 prompt> [User-defined constants (0)]
-prompt> [Included files: 0]
+prompt> [Included files: %d]%A
 prompt> [No error found!]
 prompt> [Literal Constants in foo() (2)]
 |-------- C0 -------> [var_dump]