Current File : //home/strato/chroot/opt/RZphp83/includes/tests/PEAR_Info/tests/customConfig.phpt
--TEST--
PEAR_Info using custom configuration
--FILE--
<?php
$ds         = DIRECTORY_SEPARATOR;
$dir        = dirname(__FILE__);
$sysconfdir = $dir . $ds . 'sysconf_dir';
$peardir    = $dir . $ds . 'pear_dir';
$userdir    = $dir . $ds . 'user_dir';

putenv("PHP_PEAR_SYSCONF_DIR=" . $sysconfdir);
chdir($dir);

// we get PEAR_Info class only here due to setting of PEAR_CONFIG_SYSCONFDIR
include_once 'PEAR/Info.php';

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    $conf_file    = $peardir . $ds . 'pearsys.ini';
    $custom_file1 = $peardir . $ds . 'name1.pearsys.ini';
    $custom_file2 = $userdir . $ds . 'name2.pearsys.ini';
} else {
    $conf_file    = $peardir . $ds . 'pear.conf';
    $custom_file1 = $peardir . $ds . 'name1.pear.conf';
    $custom_file2 = $userdir . $ds . 'name2.pear.conf';
}

if (!file_exists($conf_file)) {
    // write once PEAR system-wide config file for simulation
    $config =& PEAR_Config::singleton();
    $config->set('php_dir', $peardir);
    $config->writeConfigFile($conf_file);

    // also writes custom pear system config files
    $config->writeConfigFile($custom_file1);
    $config->writeConfigFile($custom_file2);
}

/**
 * TestCase 1:
 * class constructor with only $pear_dir parameter
 *
 * Will try to detect if default user config files (pear.ini | .pearrc),
 * and/or default system config files (pearsys.ini | pear.conf) are available
 * into $peardir directory.
 */
$testCase = 'testConfigFilesExistWithDefaultNameInPearDir';

$GLOBALS['_PEAR_Config_instance'] = null;

$pear_dir = $peardir;

// try to load PEAR system config ($conf_file) from system dir
$pearInfo = new PEAR_Info($pear_dir);

$result = (!is_null($pearInfo->reg))
    ? 'OK' : 'System PEAR configuration files does not exist';

echo $testCase . ' : ' . $result;
echo "\n";

/**
 * TestCase 2:
 * class constructor with 3 parameters ($pear_dir, $user_file, and $system_file)
 *
 * Will try to detect if user config files and/or system config files
 * are available into $peardir directory.
 */
$testCase = 'testConfigFilesExistWithCustomNameInPearDir';

$GLOBALS['_PEAR_Config_instance'] = null;

$pear_dir    = $peardir;
$user_file   = '';
$system_file = $custom_file1;

// try to load PEAR system config ($custom_file1) from pear dir
$pearInfo = new PEAR_Info($pear_dir, $user_file, $system_file);

$result = (!is_null($pearInfo->reg))
    ? 'OK' : 'User PEAR configuration files does not exist';

echo $testCase . ' : ' . $result;
echo "\n";

/**
 * TestCase 3:
 * class constructor with parameters ($user_file, and $system_file)
 *
 * Will try to detect if user config files and/or system config files
 * are available into user directory.
 */
$testCase = 'testConfigFilesExistInUserDir';

$GLOBALS['_PEAR_Config_instance'] = null;

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    $user_file   = $userdir . $ds . 'name2.pear.ini';
    $system_file = $userdir . $ds . 'name2.pearsys.ini';
} else {
    $user_file   = $userdir . $ds . 'name2.pearrc';
    $system_file = $userdir . $ds . 'name2.pear.conf';
}
$pear_dir = '';

// try to load PEAR system config ($system_file) from user dir,
// because user config ($user_file) does not exists (volontary)
$pearInfo = new PEAR_Info($pear_dir, $user_file, $system_file);

$result = (!is_null($pearInfo->reg))
    ? 'OK' : 'User PEAR configuration files does not exist';

echo $testCase . ' : ' . $result;
echo "\n";

/**
 * TestCase 4:
 * class constructor with only $pear_dir parameter
 *
 * No user or system file exists into pear directory.
 * Will display error to prevent unexpected behavior.
 */
$testCase = 'testNoConfigFilesFoundIntoPearDir';

$GLOBALS['_PEAR_Config_instance'] = null;

$pear_dir = $dir . $ds . 'pear2_dir';

$pearInfo = new PEAR_Info($pear_dir);

$result = (is_null($pearInfo->reg))
    ? 'OK' : 'User PEAR configuration files does not exist';

echo $testCase . ' : ' . $result;
echo "\n";

/**
 * TestCase 5:
 * class constructor with only $user_file and $system_file parameters
 *
 * No such (name3) user or system file exists into user directory.
 * Will display an error to prevent unexpected behavior.
 */
$testCase = 'testNoConfigFilesFoundIntoUserDir';

$GLOBALS['_PEAR_Config_instance'] = null;

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    $user_file   = $userdir . $ds . 'name3.pear.ini';
    $system_file = $userdir . $ds . 'name3.pearsys.ini';
} else {
    $user_file   = $userdir . $ds . 'name3.pearrc';
    $system_file = $userdir . $ds . 'name3.pear.conf';
}
$pear_dir = '';

$pearInfo = new PEAR_Info($pear_dir, $user_file, $system_file);

$result = (is_null($pearInfo->reg))
    ? 'OK' : strip_tags($pearInfo->info);

echo $testCase . ' : ' . $result;
echo "\n";

/**
 * TestCase 6:
 * class constructor with only $options parameter
 */
$testCase = 'testShowResultsWithRenderOptions';

$GLOBALS['_PEAR_Config_instance'] = null;

$pear_dir    = $peardir;
$user_file   = '';
$system_file = '';
$options     = array(
    'resume' => PEAR_INFO_FULLPAGE |
                PEAR_INFO_GENERAL | PEAR_INFO_CHANNELS | PEAR_INFO_PACKAGES_VERSION |
                PEAR_INFO_CREDITS_PACKAGES,
    'channels' => array()
);

// try to load PEAR system config from pear dir
$pearInfo = new PEAR_Info($pear_dir, $user_file, $system_file, $options);

$result = (!is_null($pearInfo->reg))
    ? 'OK' : 'KO';

echo $testCase . ' : ' . $result;
echo "\n";

/**
 * TestCase 7:
 * class constructor with invalid $peardir parameter
 */
$testCase = 'testInvalidPearDir';

$GLOBALS['_PEAR_Config_instance'] = null;

$pear_dir = $dir . $ds . 'invalid_pear_dir';

$pearInfo = new PEAR_Info($pear_dir);

$result = (is_null($pearInfo->reg))
    ? 'OK' : 'Valid PEAR directory found';

echo $testCase . ' : ' . $result;
?>
--CLEAN--
<?php
$ds         = DIRECTORY_SEPARATOR;
$dir        = dirname(__FILE__);
$sysconfdir = $dir . $ds . 'sysconf_dir';
$peardir    = $dir . $ds . 'pear_dir';
$userdir    = $dir . $ds . 'user_dir';

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    $conf_file    = $peardir . $ds . 'pearsys.ini';
    $custom_file1 = $peardir . $ds . 'name1.pearsys.ini';
    $custom_file2 = $userdir . $ds . 'name2.pearsys.ini';
} else {
    $conf_file    = $peardir . $ds . 'pear.conf';
    $custom_file1 = $peardir . $ds . 'name1.pear.conf';
    $custom_file2 = $userdir . $ds . 'name2.pear.conf';
}

unlink ($conf_file);
unlink ($custom_file1);
unlink ($custom_file2);
?>
--EXPECT--
testConfigFilesExistWithDefaultNameInPearDir : OK
testConfigFilesExistWithCustomNameInPearDir : OK
testConfigFilesExistInUserDir : OK
testNoConfigFilesFoundIntoPearDir : OK
testNoConfigFilesFoundIntoUserDir : OK
testShowResultsWithRenderOptions : OK
testInvalidPearDir : OK