Coverage for gws-app/gws/lib/osx/_test.py: 0%

190 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1"""Tests for the osx module.""" 

2 

3import os 

4import re 

5import time 

6 

7import gws.lib.osx as osx 

8import gws.test.util as u 

9 

10 

11def test_getenv(): 

12 os.environ['GWS_TEST_1'] = 'a' 

13 assert osx.getenv('GWS_TEST_1') == 'a' 

14 

15 

16def test_getenv_default(): 

17 assert osx.getenv('FOOBAR', 'default') == 'default' 

18 

19 

20def test_nowait(): 

21 with u.temp_file_in_base_dir('#!/bin/bash\nsleep 100\n') as p: 

22 os.chmod(p, 0o777) 

23 assert p not in osx.run('ps -ax') 

24 osx.run_nowait(p) 

25 assert p in osx.run('ps -ax') 

26 

27 

28def test_run(): 

29 out = osx.run(['bash', '--help']) 

30 assert 'option' in out 

31 

32 

33def test_run_error(): 

34 with u.raises(osx.Error): 

35 osx.run('no_such_thing') 

36 

37 out = osx.run(['bash', 'NO_SUCH_FILE'], strict=False) 

38 assert 'such file' in out 

39 

40 with u.raises(osx.Error): 

41 osx.run(['bash', 'NO_SUCH_FILE'], strict=True) 

42 

43 

44def test_run_timeout(): 

45 with u.temp_file_in_base_dir('#!/bin/bash\nsleep 100\n') as p: 

46 with u.raises(osx.TimeoutError): 

47 os.chmod(p, 0o777) 

48 osx.run(p, timeout=1) 

49 

50 

51def test_unlink(tmp_path): 

52 d = tmp_path / "sub" 

53 d.mkdir() 

54 p = d / "foo.txt" 

55 p.write_text("test") 

56 osx.unlink(p) 

57 assert not os.listdir(d) 

58 

59 

60def test_rename(tmp_path): 

61 d = tmp_path / "sub" 

62 d.mkdir() 

63 p = d / "foo.txt" 

64 p.write_text("test") 

65 osx.rename(p, d / 'bar.txt') 

66 p = os.listdir(d)[0] 

67 assert p == 'bar.txt' 

68 p = d / p 

69 assert p.read_text() == 'test' 

70 

71 

72def test_chown(): 

73 # @TODO must be root for that 

74 pass 

75 # with u.temp_file_in_base_dir('...') as p: 

76 # osx.chown(p, user=333, group=444) 

77 # assert os.stat(p).st_uid == 333 

78 # assert os.stat(p).st_gid == 444 

79 

80 

81def test_file_mtime(tmp_path): 

82 d = tmp_path / "sub" 

83 d.mkdir() 

84 p = d / "foo.txt" 

85 p.write_text("test") 

86 assert int(osx.file_mtime(p)) == int(time.time()) 

87 

88 

89def test_dir_mtime(tmp_path): 

90 d = tmp_path / 'sub' 

91 d.mkdir() 

92 p = d / 'foo.txt' 

93 p.write_text('test') 

94 assert int(osx.file_mtime(d)) == int(time.time()) 

95 

96 

97def test_file_age(tmp_path): 

98 d = tmp_path / "sub" 

99 d.mkdir() 

100 p = d / "foo.txt" 

101 p.write_text("test") 

102 time.sleep(1) 

103 assert osx.file_age(p) == 1 

104 

105 

106def test_file_size(tmp_path): 

107 d = tmp_path / "sub" 

108 d.mkdir() 

109 p = d / "foo.txt" 

110 p.write_text("te st") 

111 assert osx.file_size(p) == 5 

112 

113 

114def test_file_checksum(tmp_path): 

115 d = tmp_path / "sub" 

116 d.mkdir() 

117 p = d / "bar.txt" 

118 p.write_text("foo") 

119 assert osx.file_checksum(p) == '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' 

120 

121 

122# not working 

123# def test_running_pids(): 

124# for i in psutil.process_iter(): 

125# assert i.name() in osx.running_pids().get(i.pid) 

126 

127 

128# def test_process_rss_size(): 

129# assert 110 >= int(osx.process_rss_size('m')) >= 90 

130# 

131 

132# generator obj 

133def test_find_files(tmp_path): 

134 d = tmp_path / "sub" 

135 d.mkdir() 

136 p = d / "bar.txt" 

137 p.write_text("foo") 

138 d = d / "sub2" 

139 d.mkdir() 

140 p = d / "bar2.txt" 

141 p.write_text("foo") 

142 d = tmp_path / "sub3" 

143 d.mkdir() 

144 p = d / "bar3.txt" 

145 p.write_text("foo") 

146 test = [] 

147 for i in osx.find_files(tmp_path): 

148 test.append(i) 

149 assert str(tmp_path / "sub" / "sub2" / "bar2.txt") in test 

150 assert str(tmp_path / "sub" / "bar.txt") in test 

151 assert str(tmp_path / "sub3" / "bar3.txt") in test 

152 assert len(test) == 3 

153 

154 

155def test_find_directories(tmp_path): 

156 d = tmp_path / "sub" 

157 d.mkdir() 

158 d = d / "sub2" 

159 d.mkdir() 

160 d = tmp_path / "bus" 

161 d.mkdir() 

162 p = d / "bar.txt" 

163 p.write_text("foo") 

164 test = [] 

165 for i in osx.find_directories(tmp_path): 

166 test.append(i) 

167 assert str(tmp_path / "sub") in test 

168 assert str(tmp_path / "sub" / "sub2") in test 

169 assert str(tmp_path / "bus") in test 

170 assert len(test) == 3 

171 

172 

173def test_parse_path(tmp_path): 

174 dirname = osx.parse_path(str(tmp_path)).get('dirname') 

175 ext = osx.parse_path(str(tmp_path)).get('extension') 

176 fname = osx.parse_path(str(tmp_path)).get('filename') 

177 name = osx.parse_path(str(tmp_path)).get('name') 

178 assert re.match(r'^/tmp/pytest-of-\w*/pytest-\d*$', dirname) 

179 assert re.match(r'', ext) 

180 assert re.match(r'^test_parse_path\d*$', fname) 

181 assert re.match(r'test_parse_path\d*', name) 

182 

183 

184def test_file_name(tmp_path): 

185 d = tmp_path / "sub" 

186 d.mkdir() 

187 p = d / "bar.txt" 

188 p.write_text("foo") 

189 assert osx.file_name(str(p)) == 'bar.txt' 

190 

191 

192def test_abs_path(tmp_path): 

193 d = tmp_path / "sub" 

194 d.mkdir() 

195 p = d / "bar.txt" 

196 p.write_text("foo") 

197 assert osx.abs_path('bar.txt', '/tmp') == '/tmp/bar.txt' 

198 

199 

200def test_abs_path_isabs(tmp_path): 

201 d = tmp_path / "sub" 

202 d.mkdir() 

203 p = d / "bar.txt" 

204 p.write_text("foo") 

205 assert osx.abs_path('/bar.txt', '/tmp') == '/bar.txt' 

206 

207 

208def test_abs_path_nobase(tmp_path): 

209 d = tmp_path / "sub" 

210 d.mkdir() 

211 p = d / "bar.txt" 

212 p.write_text("foo") 

213 with u.raises(ValueError): 

214 osx.abs_path('bar.txt', '') 

215 

216 

217def test_abs_web_path(tmp_path): 

218 d = tmp_path / "sub" 

219 d.mkdir() 

220 p = d / "bar.txt" 

221 p.write_text("foo") 

222 path = str(p)[4:] 

223 name = osx.getenv('HOME').split('/')[-1] 

224 pattern = r'/tmp/pytest-of-' + re.escape(name) + r'/pytest-\d*/test_abs_web_path0/sub/bar.txt' 

225 assert re.match(pattern, osx.abs_web_path(path, '/tmp')) 

226 

227 

228def test_abs_web_path_no_filepath(tmp_path): 

229 d = tmp_path / "sub" 

230 d.mkdir() 

231 p = d / "bar.txt" 

232 p.write_text("foo") 

233 path = str(p)[2:] 

234 assert not osx.abs_web_path(path, '/tmp') 

235 

236 

237def test_abs_web_path_inv_filename(tmp_path): 

238 d = tmp_path / "sub" 

239 d.mkdir() 

240 p = d / "bar:txt" 

241 p.write_text("foo") 

242 path = str(p)[4:] 

243 assert not osx.abs_web_path(path, '/tmp') 

244 

245 

246def test_abs_web_path_inv_dir(tmp_path): 

247 d = tmp_path / "sub" 

248 d.mkdir() 

249 p = d / "bar.txt" 

250 p.write_text("foo") 

251 path = str(p)[4:] 

252 assert not osx.abs_web_path(':' + path, '/tmp') 

253 

254 

255def test_rel_path(tmp_path): 

256 d = tmp_path / "sub" 

257 d.mkdir() 

258 p = d / "bar.txt" 

259 p.write_text("foo") 

260 path = str(p) 

261 base = str(p)[:-12] 

262 assert osx.rel_path(path, base) == 'sub/bar.txt' 

263 assert osx.rel_path(path, base + '/foo/bar') == '../../sub/bar.txt'