Server IP : 127.0.0.2 / Your IP : 18.216.237.210 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/vendor/psy/psysh/test/Psy/Test/ |
Upload File : |
<?php /* * This file is part of Psy Shell. * * (c) 2012-2017 Justin Hileman * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Psy\Test; use Psy\CodeCleaner; use Psy\Configuration; use Psy\ExecutionLoop\Loop; use Psy\Output\PassthruPager; use Psy\VersionUpdater\GitHubChecker; use Symfony\Component\Console\Output\ConsoleOutput; class ConfigurationTest extends \PHPUnit\Framework\TestCase { private function getConfig($configFile = null) { return new Configuration(array( 'configFile' => $configFile ?: __DIR__ . '/../../fixtures/empty.php', )); } public function testDefaults() { $config = $this->getConfig(); $this->assertEquals(function_exists('readline'), $config->hasReadline()); $this->assertEquals(function_exists('readline'), $config->useReadline()); $this->assertEquals(function_exists('pcntl_signal'), $config->hasPcntl()); $this->assertEquals(function_exists('pcntl_signal'), $config->usePcntl()); $this->assertFalse($config->requireSemicolons()); $this->assertSame(Configuration::COLOR_MODE_AUTO, $config->colorMode()); $this->assertNull($config->getStartupMessage()); } public function testGettersAndSetters() { $config = $this->getConfig(); $this->assertNull($config->getDataDir()); $config->setDataDir('wheee'); $this->assertEquals('wheee', $config->getDataDir()); $this->assertNull($config->getConfigDir()); $config->setConfigDir('wheee'); $this->assertEquals('wheee', $config->getConfigDir()); } /** * @dataProvider directories */ public function testFilesAndDirectories($home, $configFile, $historyFile, $manualDbFile) { $oldHome = getenv('HOME'); putenv("HOME=$home"); $config = new Configuration(); $this->assertEquals(realpath($configFile), realpath($config->getConfigFile())); $this->assertEquals(realpath($historyFile), realpath($config->getHistoryFile())); $this->assertEquals(realpath($manualDbFile), realpath($config->getManualDbFile())); putenv("HOME=$oldHome"); } public function directories() { $base = realpath(__DIR__ . '/../../fixtures'); return array( array( $base . '/default', $base . '/default/.config/psysh/config.php', $base . '/default/.config/psysh/psysh_history', $base . '/default/.local/share/psysh/php_manual.sqlite', ), array( $base . '/legacy', $base . '/legacy/.psysh/rc.php', $base . '/legacy/.psysh/history', $base . '/legacy/.psysh/php_manual.sqlite', ), array( $base . '/mixed', $base . '/mixed/.psysh/config.php', $base . '/mixed/.psysh/psysh_history', null, ), ); } public function testLoadConfig() { $config = $this->getConfig(); $cleaner = new CodeCleaner(); $pager = new PassthruPager(new ConsoleOutput()); $loop = new Loop($config); $config->loadConfig(array( 'useReadline' => false, 'usePcntl' => false, 'codeCleaner' => $cleaner, 'pager' => $pager, 'loop' => $loop, 'requireSemicolons' => true, 'errorLoggingLevel' => E_ERROR | E_WARNING, 'colorMode' => Configuration::COLOR_MODE_FORCED, 'startupMessage' => 'Psysh is awesome!', )); $this->assertFalse($config->useReadline()); $this->assertFalse($config->usePcntl()); $this->assertSame($cleaner, $config->getCodeCleaner()); $this->assertSame($pager, $config->getPager()); $this->assertSame($loop, $config->getLoop()); $this->assertTrue($config->requireSemicolons()); $this->assertEquals(E_ERROR | E_WARNING, $config->errorLoggingLevel()); $this->assertSame(Configuration::COLOR_MODE_FORCED, $config->colorMode()); $this->assertSame('Psysh is awesome!', $config->getStartupMessage()); } public function testLoadConfigFile() { $config = $this->getConfig(__DIR__ . '/../../fixtures/config.php'); $runtimeDir = $this->joinPath(realpath(sys_get_temp_dir()), 'psysh_test', 'withconfig', 'temp'); $this->assertStringStartsWith($runtimeDir, realpath($config->getTempFile('foo', 123))); $this->assertStringStartsWith($runtimeDir, realpath(dirname($config->getPipe('pipe', 123)))); $this->assertStringStartsWith($runtimeDir, realpath($config->getRuntimeDir())); $this->assertEquals(function_exists('readline'), $config->useReadline()); $this->assertFalse($config->usePcntl()); $this->assertEquals(E_ALL & ~E_NOTICE, $config->errorLoggingLevel()); } public function testLoadLocalConfigFile() { $oldPwd = getcwd(); chdir(realpath(__DIR__ . '/../../fixtures/project/')); $config = new Configuration(); // When no configuration file is specified local project config is merged $this->assertFalse($config->useReadline()); $this->assertTrue($config->usePcntl()); $config = new Configuration(array('configFile' => __DIR__ . '/../../fixtures/config.php')); // Defining a configuration file skips loading local project config $this->assertTrue($config->useReadline()); $this->assertFalse($config->usePcntl()); chdir($oldPwd); } /** * @expectedException \Psy\Exception\DeprecatedException */ public function testBaseDirConfigIsDeprecated() { $config = new Configuration(array('baseDir' => 'fake')); } private function joinPath() { return implode(DIRECTORY_SEPARATOR, func_get_args()); } public function testConfigIncludes() { $config = new Configuration(array( 'defaultIncludes' => array('/file.php'), 'configFile' => __DIR__ . '/../../fixtures/empty.php', )); $includes = $config->getDefaultIncludes(); $this->assertCount(1, $includes); $this->assertEquals('/file.php', $includes[0]); } public function testGetOutput() { $config = $this->getConfig(); $output = $config->getOutput(); $this->assertInstanceOf('\Psy\Output\ShellOutput', $output); } public function getOutputDecoratedProvider() { return array( 'auto' => array( null, Configuration::COLOR_MODE_AUTO, ), 'forced' => array( true, Configuration::COLOR_MODE_FORCED, ), 'disabled' => array( false, Configuration::COLOR_MODE_DISABLED, ), ); } /** @dataProvider getOutputDecoratedProvider */ public function testGetOutputDecorated($expectation, $colorMode) { $config = $this->getConfig(); $config->setColorMode($colorMode); $this->assertSame($expectation, $config->getOutputDecorated()); } public function setColorModeValidProvider() { return array( 'auto' => array(Configuration::COLOR_MODE_AUTO), 'forced' => array(Configuration::COLOR_MODE_FORCED), 'disabled' => array(Configuration::COLOR_MODE_DISABLED), ); } /** @dataProvider setColorModeValidProvider */ public function testSetColorModeValid($colorMode) { $config = $this->getConfig(); $config->setColorMode($colorMode); $this->assertEquals($colorMode, $config->colorMode()); } /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage invalid color mode: some invalid mode */ public function testSetColorModeInvalid() { $config = $this->getConfig(); $config->setColorMode('some invalid mode'); } public function testSetCheckerValid() { $config = $this->getConfig(); $checker = new GitHubChecker(); $config->setChecker($checker); $this->assertSame($checker, $config->getChecker()); } }