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
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-17 01:37 +0200
1"""Tests for the osx module."""
3import os
4import re
5import time
7import gws.lib.osx as osx
8import gws.test.util as u
11def test_getenv():
12 os.environ['GWS_TEST_1'] = 'a'
13 assert osx.getenv('GWS_TEST_1') == 'a'
16def test_getenv_default():
17 assert osx.getenv('FOOBAR', 'default') == 'default'
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')
28def test_run():
29 out = osx.run(['bash', '--help'])
30 assert 'option' in out
33def test_run_error():
34 with u.raises(osx.Error):
35 osx.run('no_such_thing')
37 out = osx.run(['bash', 'NO_SUCH_FILE'], strict=False)
38 assert 'such file' in out
40 with u.raises(osx.Error):
41 osx.run(['bash', 'NO_SUCH_FILE'], strict=True)
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)
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)
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'
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
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())
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())
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
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
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'
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)
128# def test_process_rss_size():
129# assert 110 >= int(osx.process_rss_size('m')) >= 90
130#
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
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
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)
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'
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'
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'
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', '')
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'))
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')
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')
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')
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'