123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- class XdgTest extends PHPUnit_Framework_TestCase
- {
- /**
- * @return \XdgBaseDir\Xdg
- */
- public function getXdg()
- {
- return new \XdgBaseDir\Xdg();
- }
- public function testGetHomeDir()
- {
- putenv('HOME=/fake-dir');
- $this->assertEquals('/fake-dir', $this->getXdg()->getHomeDir());
- }
- public function testGetFallbackHomeDir()
- {
- putenv('HOME=');
- putenv('HOMEDRIVE=C:');
- putenv('HOMEPATH=fake-dir');
- $this->assertEquals('C:/fake-dir', $this->getXdg()->getHomeDir());
- }
- public function testXdgPutCache()
- {
- putenv('XDG_DATA_HOME=tmp/');
- putenv('XDG_CONFIG_HOME=tmp/');
- putenv('XDG_CACHE_HOME=tmp/');
- $this->assertEquals('tmp/', $this->getXdg()->getHomeCacheDir());
- }
- public function testXdgPutData()
- {
- putenv('XDG_DATA_HOME=tmp/');
- $this->assertEquals('tmp/', $this->getXdg()->getHomeDataDir());
- }
- public function testXdgPutConfig()
- {
- putenv('XDG_CONFIG_HOME=tmp/');
- $this->assertEquals('tmp/', $this->getXdg()->getHomeConfigDir());
- }
- public function testXdgDataDirsShouldIncludeHomeDataDir()
- {
- putenv('XDG_DATA_HOME=tmp/');
- putenv('XDG_CONFIG_HOME=tmp/');
- $this->assertArrayHasKey('tmp/', array_flip($this->getXdg()->getDataDirs()));
- }
- public function testXdgConfigDirsShouldIncludeHomeConfigDir()
- {
- putenv('XDG_CONFIG_HOME=tmp/');
- $this->assertArrayHasKey('tmp/', array_flip($this->getXdg()->getConfigDirs()));
- }
- /**
- * If XDG_RUNTIME_DIR is set, it should be returned
- */
- public function testGetRuntimeDir()
- {
- putenv('XDG_RUNTIME_DIR=/tmp/');
- $runtimeDir = $this->getXdg()->getRuntimeDir();
- $this->assertEquals(is_dir($runtimeDir), true);
- }
- /**
- * In strict mode, an exception should be shown if XDG_RUNTIME_DIR does not exist
- *
- * @expectedException \RuntimeException
- */
- public function testGetRuntimeDirShouldThrowException()
- {
- putenv('XDG_RUNTIME_DIR=');
- $this->getXdg()->getRuntimeDir(true);
- }
- /**
- * In fallback mode a directory should be created
- */
- public function testGetRuntimeDirShouldCreateDirectory()
- {
- putenv('XDG_RUNTIME_DIR=');
- $dir = $this->getXdg()->getRuntimeDir(false);
- $permission = decoct(fileperms($dir) & 0777);
- $this->assertEquals(700, $permission);
- }
- /**
- * Ensure, that the fallback directories are created with correct permission
- */
- public function testGetRuntimeShouldDeleteDirsWithWrongPermission()
- {
- $runtimeDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR . XdgBaseDir\Xdg::RUNTIME_DIR_FALLBACK . getenv('USER');
- rmdir($runtimeDir);
- mkdir($runtimeDir, 0764, true);
- // Permission should be wrong now
- $permission = decoct(fileperms($runtimeDir) & 0777);
- $this->assertEquals(764, $permission);
- putenv('XDG_RUNTIME_DIR=');
- $dir = $this->getXdg()->getRuntimeDir(false);
- // Permission should be fixed
- $permission = decoct(fileperms($dir) & 0777);
- $this->assertEquals(700, $permission);
- }
- }
|