# HG changeset patch # User Pierre-Yves David # Date 2020-03-20 22:41:35 # Node ID 82543879b48e3248786cf43fc5590a863bb83e87 # Parent 1ed6293fc31bd70b0a40399bf2e10bd3b94d7462 testlib: adjust wait-on-file timeout according to the global test timeout Lets assume that if test timeout have been set to be twice as long, it means local timeout should be twice as long too. I am not aware of any case were extending timeout for file based synchronisation was necessary, but the safety seems simple to implements. Differential Revision: https://phab.mercurial-scm.org/D8316 diff --git a/tests/run-tests.py b/tests/run-tests.py --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -321,7 +321,7 @@ IMPL_PATH = b'PYTHONPATH' if 'java' in sys.platform: IMPL_PATH = b'JYTHONPATH' -defaults = { +default_defaults = { 'jobs': ('HGTEST_JOBS', multiprocessing.cpu_count()), 'timeout': ('HGTEST_TIMEOUT', 180), 'slowtimeout': ('HGTEST_SLOWTIMEOUT', 1500), @@ -329,6 +329,8 @@ defaults = { 'shell': ('HGTEST_SHELL', 'sh'), } +defaults = default_defaults.copy() + def canonpath(path): return os.path.realpath(os.path.expanduser(path)) @@ -1327,6 +1329,9 @@ class Test(unittest.TestCase): env['TESTTMP'] = _bytes2sys(self._testtmp) env['TESTNAME'] = self.name env['HOME'] = _bytes2sys(self._testtmp) + formated_timeout = _bytes2sys(b"%d" % default_defaults['timeout'][1]) + env['HGTEST_TIMEOUT_DEFAULT'] = formated_timeout + env['HGTEST_TIMEOUT'] = _bytes2sys(b"%d" % self._timeout) # This number should match portneeded in _getport for port in xrange(3): # This list should be parallel to _portmap in _getreplacements diff --git a/tests/testlib/wait-on-file b/tests/testlib/wait-on-file --- a/tests/testlib/wait-on-file +++ b/tests/testlib/wait-on-file @@ -10,6 +10,12 @@ if [ $# -lt 2 ] || [ $# -gt 3 ]; then fi timer="$1" + +# if the test timeout have been extended, explicitly extend the provided timer +if [ "$HGTEST_TIMEOUT_DEFAULT" -lt "$HGTEST_TIMEOUT" ]; then + timer=$(( ("$timer" * "$HGTEST_TIMEOUT") / $HGTEST_TIMEOUT_DEFAULT )) +fi + wait_on="$2" create="" if [ $# -eq 3 ]; then