summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSara Golemon <pollita@php.net>2017-05-24 12:41:57 -0700
committerSara Golemon <pollita@php.net>2017-05-24 13:58:18 -0700
commitd8d1c78ed08423738376adc450aba3932b33a20e (patch)
tree9b1f755b54c98419aa518509279fd5c76e0d5235
parent7c7383067f6719324004407e17c0f5d6c740c39f (diff)
downloadphp-git-d8d1c78ed08423738376adc450aba3932b33a20e.tar.gz
Skip FPM tests when running as root (unless requested)
FPM must be configured as a user. Normally it defaults to the current user, but if that's root it'll fail to startup unless the --run-as-root option is provided. Extend that logic into the test runner so that we don't fail for stupid reasons. If you're running `make test` as root and you want FPM tests to run anyway, set TEST_FPM_RUN_AS_ROOT=1 in your environment.
-rw-r--r--sapi/fpm/tests/include.inc5
-rw-r--r--sapi/fpm/tests/skipif.inc6
2 files changed, 9 insertions, 2 deletions
diff --git a/sapi/fpm/tests/include.inc b/sapi/fpm/tests/include.inc
index 8faf53dcc2..1e41957c7c 100644
--- a/sapi/fpm/tests/include.inc
+++ b/sapi/fpm/tests/include.inc
@@ -38,7 +38,10 @@ function run_fpm($config, &$out = false, $extra_args = '') /* {{{ */
/* Since it's not possible to spawn a process under linux without using a
* shell in php (why?!?) we need a little shell trickery, so that we can
* actually kill php-fpm */
- $fpm = proc_open('killit () { kill $child; }; trap killit TERM; '.get_fpm_path().' -F -O -y '.$cfg.' '.$extra_args.' 2>&1 & child=$!; wait', $desc, $pipes);
+ $asroot = getenv('TEST_FPM_RUN_AS_ROOT') ? '--allow-to-run-as-root' : '';
+ $cmd = get_fpm_path()." $asroot -F -O -y $cfg $extra_args";
+ $fpm = proc_open("killit () { kill \$child; }; trap killit TERM; $cmd 2>&1 & child=\$!; wait",
+ $desc, $pipes);
register_shutdown_function(
function($fpm) use($cfg) {
@unlink($cfg);
diff --git a/sapi/fpm/tests/skipif.inc b/sapi/fpm/tests/skipif.inc
index 8c569daafd..08c6bbff69 100644
--- a/sapi/fpm/tests/skipif.inc
+++ b/sapi/fpm/tests/skipif.inc
@@ -4,10 +4,14 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
die ("skip not for Windows");
}
+
+if (!getmyuid() && !getenv('TEST_FPM_RUN_AS_ROOT')) {
+ die('Refusing to run as root');
+}
+
include dirname(__FILE__)."/include.inc";
if (!get_fpm_path()) {
die("skip FPM not found");
}
-
?>