From 19dd4d25e9d41925ba5ea4c87881b4cf95a55fa4 Mon Sep 17 00:00:00 2001 From: John Boehr Date: Sun, 6 Aug 2017 15:04:36 -0700 Subject: [PATCH 1/6] Fix issues with phpt and EXTENSION on windows (BUG 75042) * Commands are not properly escaped for windows * Specifying "-n" to check loaded modules causes "Module already loaded" warning * Extensions to be loaded need the "php_" prefix on Windows Bug: https://bugs.php.net/bug.php?id=75042 --- run-tests.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/run-tests.php b/run-tests.php index 8cdaa03b20bd5..487c8845b289e 100755 --- a/run-tests.php +++ b/run-tests.php @@ -1575,15 +1575,16 @@ function run_test($php, $file, $env) // Additional required extensions if (array_key_exists('EXTENSIONS', $section_text)) { - $ext_dir=`$php -r 'echo ini_get("extension_dir");'`; + $ext_dir=`$php -r "echo ini_get('extension_dir');"`; $extensions = preg_split("/[\n\r]+/", trim($section_text['EXTENSIONS'])); - $loaded = explode(",", `$php -n -r 'echo implode(",", get_loaded_extensions());'`); + $loaded = explode(",", `$php -r "echo implode(',', get_loaded_extensions());"`); + $ext_prefix = substr(PHP_OS, 0, 3) === "WIN" ? "php_" : ""; foreach ($extensions as $req_ext) { if (!in_array($req_ext, $loaded)) { if ($req_ext == 'opcache') { - $ini_settings['zend_extension'][] = $ext_dir . DIRECTORY_SEPARATOR . $req_ext . '.' . PHP_SHLIB_SUFFIX; + $ini_settings['zend_extension'][] = $ext_dir . DIRECTORY_SEPARATOR . $ext_prefix . $req_ext . '.' . PHP_SHLIB_SUFFIX; } else { - $ini_settings['extension'][] = $ext_dir . DIRECTORY_SEPARATOR . $req_ext . '.' . PHP_SHLIB_SUFFIX; + $ini_settings['extension'][] = $ext_dir . DIRECTORY_SEPARATOR . $ext_prefix . $req_ext . '.' . PHP_SHLIB_SUFFIX; } } } From 43829809ea3c73d7a745dd6e675feb86bba334a0 Mon Sep 17 00:00:00 2001 From: John Boehr Date: Sun, 6 Aug 2017 16:08:17 -0700 Subject: [PATCH 2/6] Add back -n flag to fetch loaded extensions in run-tests.php --- run-tests.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run-tests.php b/run-tests.php index 487c8845b289e..b8879cfe464a2 100755 --- a/run-tests.php +++ b/run-tests.php @@ -1577,7 +1577,7 @@ function run_test($php, $file, $env) if (array_key_exists('EXTENSIONS', $section_text)) { $ext_dir=`$php -r "echo ini_get('extension_dir');"`; $extensions = preg_split("/[\n\r]+/", trim($section_text['EXTENSIONS'])); - $loaded = explode(",", `$php -r "echo implode(',', get_loaded_extensions());"`); + $loaded = explode(",", `$php -n -r "echo implode(',', get_loaded_extensions());"`); $ext_prefix = substr(PHP_OS, 0, 3) === "WIN" ? "php_" : ""; foreach ($extensions as $req_ext) { if (!in_array($req_ext, $loaded)) { From 17e7cde41d6034d02077b589ee867b9057df0aa9 Mon Sep 17 00:00:00 2001 From: John Boehr Date: Mon, 7 Aug 2017 20:34:41 -0700 Subject: [PATCH 3/6] Add test for phpt EXTENSIONS directive --- tests/run-test/bug75042.phpt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 tests/run-test/bug75042.phpt diff --git a/tests/run-test/bug75042.phpt b/tests/run-test/bug75042.phpt new file mode 100644 index 0000000000000..3f51027eb3133 --- /dev/null +++ b/tests/run-test/bug75042.phpt @@ -0,0 +1,19 @@ +--TEST-- +phpt EXTENSIONS directive - bug #75042 +--SKIPIF-- + Date: Mon, 7 Aug 2017 20:48:15 -0700 Subject: [PATCH 4/6] Add a second test for bug 75042 --- tests/run-test/bug75042-2.phpt | 18 ++++++++++++++++++ tests/run-test/bug75042.phpt | 13 +++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 tests/run-test/bug75042-2.phpt diff --git a/tests/run-test/bug75042-2.phpt b/tests/run-test/bug75042-2.phpt new file mode 100644 index 0000000000000..c79eb4495f172 --- /dev/null +++ b/tests/run-test/bug75042-2.phpt @@ -0,0 +1,18 @@ +--TEST-- +phpt EXTENSIONS directive with static module +--SKIPIF-- + Date: Mon, 7 Aug 2017 21:39:10 -0700 Subject: [PATCH 5/6] Add test to test loading of nonexistent shared module with the EXTENSIONS phpt block --- tests/run-test/bug75042-3.phpt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/run-test/bug75042-3.phpt diff --git a/tests/run-test/bug75042-3.phpt b/tests/run-test/bug75042-3.phpt new file mode 100644 index 0000000000000..76ec2b5ff05d1 --- /dev/null +++ b/tests/run-test/bug75042-3.phpt @@ -0,0 +1,8 @@ +--TEST-- +phpt EXTENSIONS directive with nonexistent shared module +--EXTENSIONS-- +nonexistentsharedmodule +--FILE-- + Date: Tue, 8 Aug 2017 12:12:02 -0700 Subject: [PATCH 6/6] Pass ini settings when checking loaded extensions --- run-tests.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/run-tests.php b/run-tests.php index b8879cfe464a2..a32db44bf83f0 100755 --- a/run-tests.php +++ b/run-tests.php @@ -1575,9 +1575,12 @@ function run_test($php, $file, $env) // Additional required extensions if (array_key_exists('EXTENSIONS', $section_text)) { - $ext_dir=`$php -r "echo ini_get('extension_dir');"`; + $ext_params = array(); + settings2array($ini_overwrites, $ext_params); + settings2params($ext_params); + $ext_dir=`$php $pass_options $ext_params -d display_errors=0 -r "echo ini_get('extension_dir');"`; $extensions = preg_split("/[\n\r]+/", trim($section_text['EXTENSIONS'])); - $loaded = explode(",", `$php -n -r "echo implode(',', get_loaded_extensions());"`); + $loaded = explode(",", `$php $pass_options $ext_params -d display_errors=0 -r "echo implode(',', get_loaded_extensions());"`); $ext_prefix = substr(PHP_OS, 0, 3) === "WIN" ? "php_" : ""; foreach ($extensions as $req_ext) { if (!in_array($req_ext, $loaded)) {