1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
<?php
/*
* This file is part of composer/xdebug-handler.
*
* (c) Composer <https://github.com/composer>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace Composer\XdebugHandler;
use Composer\XdebugHandler\Helpers\BaseTestCase;
use Composer\XdebugHandler\Helpers\EnvHelper;
use Composer\XdebugHandler\Mocks\CoreMock;
/**
* We use PHP_BINARY which only became available in PHP 5.4
*
* @requires PHP 5.4
*/
class PhpConfigTest extends BaseTestCase
{
/**
* Tests that the correct command-line options are returned.
*
* @param string $method PhpConfig method to call
* @param array $expected
* @dataProvider commandLineProvider
*/
public function testCommandLineOptions($method, $expected)
{
$loaded = true;
CoreMock::createAndCheck($loaded);
$config = new PhpConfig();
$options = call_user_func(array($config, $method));
if ($method === 'useStandard') {
$data = CoreMock::getRestartSettings();
$expected[2] = $data['tmpIni'];
}
$this->assertSame($expected, $options);
}
public function commandLineProvider()
{
// $method, $expected
return array(
'original' => array('useOriginal', array()),
'standard' => array('useStandard', array('-n', '-c', '')),
'persistent' => array('usePersistent', array()),
);
}
/**
* Tests that the environment is set correctly for each mode.
*
* @param callable $iniFunc IniHelper method to use
* @param mixed $scanDir Initial value for PHP_INI_SCAN_DIR
* @param $phprc Initial value for PHPRC
* @dataProvider environmentProvider
*/
public function testEnvironment($iniFunc, $scanDir, $phprc)
{
if ($message = EnvHelper::shouldSkipTest($scanDir)) {
$this->markTestSkipped($message);
}
$ini = EnvHelper::setInis($iniFunc, $scanDir, $phprc);
$loaded = true;
CoreMock::createAndCheck($loaded);
$config = new PhpConfig();
$data = CoreMock::getRestartSettings();
$tests = array('useOriginal', 'usePersistent', 'useStandard');
foreach ($tests as $method) {
call_user_func(array($config, $method));
if ($method === 'usePersistent') {
$expectedScanDir = '';
$expectedPhprc = $data['tmpIni'];
} else {
$expectedScanDir = $scanDir;
$expectedPhprc = $phprc;
}
$this->checkEnvironment($expectedScanDir, $expectedPhprc, $method);
}
}
public function environmentProvider()
{
return EnvHelper::dataProvider();
}
/**
* Checks the value of variables in the local environment and $_SERVER
*
* @param mixed $scanDir
* @param mixed $phprc
* @param string $name
*/
private function checkEnvironment($scanDir, $phprc, $name)
{
$tests = array('PHP_INI_SCAN_DIR' => $scanDir, 'PHPRC' => $phprc);
foreach ($tests as $env => $value) {
$message = $name.' '.strtolower($env);
$this->assertSame($value, getenv($env), 'getenv '.$message);
if (false === $value) {
$this->assertSame($value, isset($_SERVER[$env]), '$_SERVER '.$message);
} else {
$this->assertSame($value, $_SERVER[$env], '$_SERVER '.$message);
}
}
}
}
|