tests/dummyssh
author Matt Harbison <matt_harbison@yahoo.com>
Sat, 12 Oct 2024 16:06:37 -0400
changeset 51996 625cf9621551
parent 48875 6000f5b25c9b
permissions -rwxr-xr-x
tests: add a module that can perform the equivalent of `SIGKILL` on any OS I started with this being Windows specific, but let's push all of the decision making into this function so that it can just be called by the tests. The tradeoff is that this is very specific to sending `SIGKILL`- since `signal.SIGKILL` doesn't exist on Windows, the desired signal can't be passed from the caller. Maybe there's a way, but let's wait until there's a need. We don't use `killdaemons.py` unconditionally because it starts with a more graceful `SIGTERM` on posix.

#!/usr/bin/env python3


import os
import shlex
import subprocess
import sys

os.chdir(os.getenv('TESTTMP'))

if sys.argv[1] != "user@dummy":
    sys.exit(-1)

os.environ["SSH_CLIENT"] = "%s 1 2" % os.environ.get('LOCALIP', '127.0.0.1')

log = open("dummylog", "ab")
log.write(b"Got arguments")
for i, arg in enumerate(sys.argv[1:]):
    log.write(b" %d:%s" % (i + 1, arg.encode('latin1')))
log.write(b"\n")
log.close()
hgcmd = sys.argv[2]
if os.name == 'nt':
    # hack to make simple unix single quote quoting work on windows
    hgcmd = hgcmd.replace("'", '"')
    cmds = shlex.split(hgcmd)
    if cmds[0].endswith('.py'):
        python_exe = os.environ['PYTHON']
        cmds.insert(0, python_exe)
    hgcmd = shlex.join(cmds)
    # shlex generate windows incompatible string...
    hgcmd = hgcmd.replace("'", '"')
r = subprocess.call(hgcmd, shell=True, close_fds=True)
sys.exit(bool(r))