XdgTest.php
3.19 KB
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
<?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);
}
}