2 require_once 'include/utils/file_utils.php';
4 class SugarFileUtilsTest extends Sugar_PHPUnit_Framework_TestCase
7 private $_old_default_permissions;
9 public function setUp()
12 $this->markTestSkipped('Skipping on Windows');
14 $this->_filename = realpath(dirname(__FILE__).'/../../../cache/').'file_utils_override'.mt_rand().'.txt';
15 touch($this->_filename);
16 $this->_old_default_permissions = $GLOBALS['sugar_config']['default_permissions'];
17 $GLOBALS['sugar_config']['default_permissions'] =
21 'user' => $this->_getCurrentUser(),
22 'group' => $this->_getCurrentGroup(),
26 public function tearDown()
28 if(file_exists($this->_filename)) {
29 unlink($this->_filename);
31 $GLOBALS['sugar_config']['default_permissions'] = $this->_old_default_permissions;
32 SugarConfig::getInstance()->clearCache();
35 private function _getCurrentUser()
37 if ( function_exists('posix_getuid') ) {
38 return posix_getuid();
43 private function _getCurrentGroup()
45 if ( function_exists('posix_getgid') ) {
46 return posix_getgid();
51 private function _getTestFilePermissions()
53 return substr(sprintf('%o', fileperms($this->_filename)), -4);
56 public function testSugarTouch()
58 $this->assertTrue(sugar_touch($this->_filename));
61 public function testSugarTouchWithTime()
63 $time = filemtime($this->_filename);
65 $this->assertTrue(sugar_touch($this->_filename, $time));
67 $this->assertEquals($time,filemtime($this->_filename));
70 public function testSugarTouchWithAccessTime()
72 $time = filemtime($this->_filename);
75 $this->assertTrue(sugar_touch($this->_filename, $time, $atime));
77 $this->assertEquals($time,filemtime($this->_filename));
78 $this->assertEquals($atime,fileatime($this->_filename));
81 public function testSugarChmod()
84 $this->assertTrue(sugar_chmod($this->_filename));
85 $this->assertEquals($this->_getTestFilePermissions(),decoct(get_mode()));
88 public function testSugarChmodWithMode()
91 $this->assertTrue(sugar_chmod($this->_filename, $mode));
93 $this->assertEquals($this->_getTestFilePermissions(),decoct($mode));
96 public function testSugarChmodNoDefaultMode()
98 $GLOBALS['sugar_config']['default_permissions']['file_mode'] = null;
99 $this->assertFalse(sugar_chmod($this->_filename));
102 public function testSugarChmodDefaultModeNotAnInteger()
104 $GLOBALS['sugar_config']['default_permissions']['file_mode'] = '';
105 $this->assertFalse(sugar_chmod($this->_filename));
108 public function testSugarChmodDefaultModeIsZero()
110 $GLOBALS['sugar_config']['default_permissions']['file_mode'] = 0;
111 $this->assertFalse(sugar_chmod($this->_filename));
114 public function testSugarChmodWithModeNoDefaultMode()
116 $GLOBALS['sugar_config']['default_permissions']['file_mode'] = null;
118 $this->assertTrue(sugar_chmod($this->_filename, $mode));
120 $this->assertEquals($this->_getTestFilePermissions(),decoct($mode));
123 public function testSugarChmodWithModeDefaultModeNotAnInteger()
125 $GLOBALS['sugar_config']['default_permissions']['file_mode'] = '';
127 $this->assertTrue(sugar_chmod($this->_filename, $mode));
129 $this->assertEquals($this->_getTestFilePermissions(),decoct($mode));
132 public function testSugarChown()
134 $this->assertTrue(sugar_chown($this->_filename));
135 $this->assertEquals(fileowner($this->_filename),$this->_getCurrentUser());
138 public function testSugarChownWithUser()
140 $this->assertTrue(sugar_chown($this->_filename,$this->_getCurrentUser()));
141 $this->assertEquals(fileowner($this->_filename),$this->_getCurrentUser());
144 public function testSugarChownNoDefaultUser()
146 $GLOBALS['sugar_config']['default_permissions']['user'] = '';
148 $this->assertFalse(sugar_chown($this->_filename));
151 public function testSugarChownWithUserNoDefaultUser()
153 $GLOBALS['sugar_config']['default_permissions']['user'] = '';
155 $this->assertTrue(sugar_chown($this->_filename,$this->_getCurrentUser()));
157 $this->assertEquals(fileowner($this->_filename),$this->_getCurrentUser());