CiviTest/bootstrap.php - Change env handling in `cv()`
authorTim Otten <totten@civicrm.org>
Wed, 3 Feb 2016 20:29:24 +0000 (13:29 -0700)
committerTim Otten <totten@civicrm.org>
Wed, 3 Feb 2016 20:29:24 +0000 (13:29 -0700)
In Ubuntu's php-cli, the php.ini overrides `variables_order` with `GPCS` --
which destroys `$_ENV`.

This seems pretty stupid...  perhaps they conflated `variables_order` with
`request_order`.

At any rate, we'll have to do statey-swappy `putenv()` things instead.

tests/phpunit/CiviTest/bootstrap.php

index e04cd6a8471fb200e818a8cb99d214fbf6a2d4a7..330c742259cf860ab5f64f3eb55bdde29070154b 100644 (file)
@@ -39,8 +39,10 @@ if (CIVICRM_UF === 'UnitTests') {
 function cv($cmd, $decode = 'json') {
   $cmd = 'cv ' . $cmd;
   $descriptorSpec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => STDERR);
-  $env = $_ENV + array('CV_OUTPUT' => 'json');
-  $process = proc_open($cmd, $descriptorSpec, $pipes, __DIR__, $env);
+  $oldOutput = getenv('CV_OUTPUT');
+  putenv("CV_OUTPUT=json");
+  $process = proc_open($cmd, $descriptorSpec, $pipes, __DIR__);
+  putenv("CV_OUTPUT=$oldOutput");
   fclose($pipes[0]);
   $result = stream_get_contents($pipes[1]);
   fclose($pipes[1]);