Patchwork D10476: testing: add a utility function to wait for file create

login
register
mail settings
Submitter phabricator
Date April 20, 2021, 4:09 a.m.
Message ID <differential-rev-PHID-DREV-biufpc7xnnkcxvpmbrdy-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/48793/
State Superseded
Headers show

Comments

phabricator - April 20, 2021, 4:09 a.m.
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This is similar to `tests/testlib/wait-on-file`, but for the python code

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D10476

AFFECTED FILES
  mercurial/testing/__init__.py

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/mercurial/testing/__init__.py b/mercurial/testing/__init__.py
--- a/mercurial/testing/__init__.py
+++ b/mercurial/testing/__init__.py
@@ -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)