Browse Source

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

Add back -n flag to fetch loaded extensions in run-tests.php

Add test for phpt EXTENSIONS directive

Add a second test for bug 75042

Add test to test loading of nonexistent shared module

with the EXTENSIONS phpt block

Pass ini settings when checking loaded extensions

Fix skipifs
pull/2704/merge
John Boehr 9 years ago
committed by Anatol Belski
parent
commit
71b12940d0
  1. 12
      run-tests.php
  2. 15
      tests/run-test/bug75042-2.phpt
  3. 8
      tests/run-test/bug75042-3.phpt
  4. 17
      tests/run-test/bug75042.phpt

12
run-tests.php

@ -1535,15 +1535,19 @@ TEST $file
// 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 join(",", 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)) {
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;
}
}
}

15
tests/run-test/bug75042-2.phpt

@ -0,0 +1,15 @@
--TEST--
phpt EXTENSIONS directive with static module
--SKIPIF--
<?php
$php = getenv('TEST_PHP_EXECUTABLE');
if (false === stripos(`$php -n -m`, 'spl')) {
die('skip spl is NOT built static');
}
--EXTENSIONS--
SPL
--FILE--
<?php
var_dump(extension_loaded('spl'));
--EXPECT--
bool(true)

8
tests/run-test/bug75042-3.phpt

@ -0,0 +1,8 @@
--TEST--
phpt EXTENSIONS directive with nonexistent shared module
--EXTENSIONS--
nonexistentsharedmodule
--FILE--
<?php
--EXPECTF--
PHP Warning: PHP Startup: Unable to load dynamic library '%snonexistentsharedmodule.%s' %A

17
tests/run-test/bug75042.phpt

@ -0,0 +1,17 @@
--TEST--
phpt EXTENSIONS directive with shared module
--SKIPIF--
<?php
$php = getenv('TEST_PHP_EXECUTABLE');
if (false !== stripos(`$php -n -m`, 'openssl')) {
die('skip openssl is built static');
}
$ext_module = ini_get('extension_dir') . DIRECTORY_SEPARATOR . (substr(PHP_OS, 0, 3) === "WIN" ? "php_openssl." : "openssl.") . PHP_SHLIB_SUFFIX;
if( !file_exists($ext_module) ) die('skip openssl shared extension not found');
--EXTENSIONS--
openssl
--FILE--
<?php
var_dump(extension_loaded('openssl'));
--EXPECT--
bool(true)
Loading…
Cancel
Save