__init__.py
53 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
r47746 | import os | |||
import time | ||||
# work around check-code complains | ||||
# | ||||
# This is a simple log level module doing simple test related work, we can't | ||||
# import more things, and we do not need it. | ||||
environ = getattr(os, 'environ') | ||||
Raphaël Gomès
|
r51109 | def wait_on_cfg(ui, cfg, timeout=10): | ||
"""synchronize on the `cfg` config path | ||||
Use this to synchronize commands during race tests. | ||||
""" | ||||
full_config = b'sync.' + cfg | ||||
wait_config = full_config + b'-timeout' | ||||
sync_path = ui.config(b'devel', full_config) | ||||
if sync_path is not None: | ||||
timeout = ui.config(b'devel', wait_config) | ||||
ready_path = sync_path + b'.waiting' | ||||
write_file(ready_path) | ||||
wait_file(sync_path, timeout=timeout) | ||||
r47746 | def _timeout_factor(): | |||
"""return the current modification to timeout""" | ||||
r48287 | default = int(environ.get('HGTEST_TIMEOUT_DEFAULT', 360)) | |||
r47746 | current = int(environ.get('HGTEST_TIMEOUT', default)) | |||
r48287 | if current == 0: | |||
return 1 | ||||
r47746 | return current / float(default) | |||
def wait_file(path, timeout=10): | ||||
timeout *= _timeout_factor() | ||||
start = time.time() | ||||
while not os.path.exists(path): | ||||
Cédric Krier
|
r48457 | if timeout and time.time() - start > timeout: | ||
r47746 | raise RuntimeError(b"timed out waiting for file: %s" % path) | |||
time.sleep(0.01) | ||||
r47747 | ||||
def write_file(path, content=b''): | ||||
r48604 | if content: | |||
write_path = b'%s.tmp' % path | ||||
else: | ||||
write_path = path | ||||
with open(write_path, 'wb') as f: | ||||
r47747 | f.write(content) | |||
r48604 | if path != write_path: | |||
os.rename(write_path, path) | ||||