sapling/tests/dummyssh

70 lines
1.6 KiB
Plaintext
Raw Normal View History

2011-05-05 03:47:46 +04:00
#!/usr/bin/env python
from __future__ import absolute_import
import shlex
import subprocess
2011-05-05 03:47:46 +04:00
import os
import sys
2011-05-05 03:47:46 +04:00
os.chdir(os.getenv('TESTTMP'))
def parse(cmd):
"""
matches hg-ssh-wrapper
"""
try:
return shlex.split(cmd)
except ValueError as e:
eprint('Illegal command "%s": %s\n' % (cmd, e))
sys.exit(255)
def parse_repo_path(path):
"""
matches hg-ssh-wrapper
"""
path = path.split("?")
if len(path) == 1:
repo = path[0]
marker = None
elif len(path) == 2:
repo = path[0]
marker = path[1]
else:
eprint("Illegal repo name: %s\n" % "?".join(path))
sys.exit(255)
return repo, marker
# Skipping SSH options
host_index = 1
while host_index < len(sys.argv) and sys.argv[host_index].startswith('-'):
host_index += 1
if sys.argv[host_index] != "user@dummy":
2011-05-05 03:47:46 +04:00
sys.exit(-1)
os.environ["SSH_CLIENT"] = "%s 1 2" % os.environ.get('LOCALIP', '127.0.0.1')
2011-05-05 03:47:46 +04:00
log = open("dummylog", "ab")
log.write("Got arguments")
for i, arg in enumerate(sys.argv[1:]):
2013-06-14 23:28:40 +04:00
log.write(" %d:%s" % (i + 1, arg))
2011-05-05 03:47:46 +04:00
log.write("\n")
log.close()
hgcmd = sys.argv[host_index + 1]
if os.name == 'nt':
# hack to make simple unix single quote quoting work on windows
hgcmd = hgcmd.replace("'", '"')
cmdargv = parse(hgcmd)
if cmdargv[:2] == ["hg", "-R"] and cmdargv[3:] == ["serve", "--stdio"]:
path, marker = parse_repo_path(cmdargv[2])
if marker == "read_copy":
path = path + "_copy"
cmdargv[2] = path
hgcmd = subprocess.list2cmdline(cmdargv)
r = os.system(hgcmd)
2011-05-05 03:47:46 +04:00
sys.exit(bool(r))