view mercurial/testing/__init__.py @ 46984:99c629101b73

testing: add a utility function to wait for file create This is similar to `tests/testlib/wait-on-file`, but for the python code Differential Revision: https://phab.mercurial-scm.org/D10476
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 19 Apr 2021 19:10:18 +0200
parents ae531f5e583c
children 52cee44aa1a0
line wrap: on
line source

from __future__ import (
    absolute_import,
    division,
)

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')


def _timeout_factor():
    """return the current modification to timeout"""
    default = int(environ.get('HGTEST_TIMEOUT_DEFAULT', 1))
    current = int(environ.get('HGTEST_TIMEOUT', default))
    return current / float(default)


def wait_file(path, timeout=10):
    timeout *= _timeout_factor()
    start = time.time()
    while not os.path.exists(path):
        if time.time() - start > timeout:
            raise RuntimeError(b"timed out waiting for file: %s" % path)
        time.sleep(0.01)