##// END OF EJS Templates
tests: skip `test-wsgicgi.t` on MSYS...
tests: skip `test-wsgicgi.t` on MSYS The test is attempting to set `PATH_INFO="/rev/\xe2\x80\x94"` into the environment, which it does. The problem is that when MSYS sees a leading '/' in an environment variable, it thinks it's a unix filesystem path, so it "helpfully" prepends the Windows path to the MSYS root directory before running a non-MSYS process. hgweb would then split this value on '/', so it would get 'C:' instead of 'rev', and return a 400 since that isn't a valid web command. I tried generating a *.bat file, but had trouble running that via `cmd.exe` inside the test. I also tried generating an equivalent *.py launcher that would set the environment variables itself. But there is no `os.environb` on Windows, and the value was getting mangled when put into the script. So, I give up. If it's encoding stuff on Windows, it's probably broken.

File last commit:

r52756:f4733654 default
r52876:46afce95 default
Show More
__init__.py
55 lines | 1.5 KiB | text/x-python | PythonLexer
from __future__ import annotations
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 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)
def _timeout_factor():
"""return the current modification to timeout"""
default = int(environ.get('HGTEST_TIMEOUT_DEFAULT', 360))
current = int(environ.get('HGTEST_TIMEOUT', default))
if current == 0:
return 1
return current / float(default)
def wait_file(path, timeout=10):
timeout *= _timeout_factor()
start = time.time()
while not os.path.exists(path):
if timeout and time.time() - start > timeout:
raise RuntimeError(b"timed out waiting for file: %s" % path)
time.sleep(0.01)
def write_file(path, content=b''):
if content:
write_path = b'%s.tmp' % path
else:
write_path = path
with open(write_path, 'wb') as f:
f.write(content)
if path != write_path:
os.rename(write_path, path)