testing: add a utility function to wait for file create
authorPierre-Yves David <pierre-yves.david@octobus.net>
Mon, 19 Apr 2021 19:10:18 +0200
changeset 46984 99c629101b73
parent 46983 e38718838808
child 46985 52cee44aa1a0
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
mercurial/testing/__init__.py
--- a/mercurial/testing/__init__.py	Mon Apr 19 19:09:18 2021 +0200
+++ b/mercurial/testing/__init__.py	Mon Apr 19 19:10:18 2021 +0200
@@ -0,0 +1,30 @@
+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)