tests/dummyssh
author Pierre-Yves David <pierre-yves.david@octobus.net>
Sun, 11 Jul 2021 17:03:58 +0200
changeset 47641 5d9f89cd4984
parent 47640 119673fb37aa
child 47774 fb8389f227a0
permissions -rwxr-xr-x
dummyssh: call python script with python We don't want windows to grab whatever python got configured to run .py file. We need the python used during the test to be used. Differential Revision: https://phab.mercurial-scm.org/D11083
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45830
c102b704edb5 global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36121
diff changeset
     1
#!/usr/bin/env python3
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
     2
29159
26d4ce8ca2bd py3: make tests/dummyssh use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 19320
diff changeset
     3
from __future__ import absolute_import
26d4ce8ca2bd py3: make tests/dummyssh use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 19320
diff changeset
     4
26d4ce8ca2bd py3: make tests/dummyssh use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 19320
diff changeset
     5
import os
47641
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
     6
import shlex
47640
119673fb37aa dummyssh: use subprocess instead of os.call
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45830
diff changeset
     7
import subprocess
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
     8
import sys
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
     9
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    10
os.chdir(os.getenv('TESTTMP'))
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    11
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    12
if sys.argv[1] != "user@dummy":
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    13
    sys.exit(-1)
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    14
31007
bfdb0741f9f2 dummyssh: use LOCALIP
Jun Wu <quark@fb.com>
parents: 29159
diff changeset
    15
os.environ["SSH_CLIENT"] = "%s 1 2" % os.environ.get('LOCALIP', '127.0.0.1')
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    16
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    17
log = open("dummylog", "ab")
35570
3e3f4c03876b tests: add b'' to string literals where bytes are required
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31007
diff changeset
    18
log.write(b"Got arguments")
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    19
for i, arg in enumerate(sys.argv[1:]):
36121
3a763d7f40e1 py3: make dummyssh compatible with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35570
diff changeset
    20
    log.write(b" %d:%s" % (i + 1, arg.encode('latin1')))
3a763d7f40e1 py3: make dummyssh compatible with Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35570
diff changeset
    21
log.write(b"\n")
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    22
log.close()
15768
cdf9c43445df tests: make simple single quotes work with dummyssh on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 14186
diff changeset
    23
hgcmd = sys.argv[2]
cdf9c43445df tests: make simple single quotes work with dummyssh on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 14186
diff changeset
    24
if os.name == 'nt':
cdf9c43445df tests: make simple single quotes work with dummyssh on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 14186
diff changeset
    25
    # hack to make simple unix single quote quoting work on windows
cdf9c43445df tests: make simple single quotes work with dummyssh on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 14186
diff changeset
    26
    hgcmd = hgcmd.replace("'", '"')
47641
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
    27
    cmds = shlex.split(hgcmd)
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
    28
    if cmds[0].endswith('.py'):
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
    29
        python_exe = os.environ['PYTHON']
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
    30
        cmds.insert(0, python_exe)
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
    31
    hgcmd = shlex.join(cmds)
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
    32
    # shlex generate windows incompatible string...
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
    33
    hgcmd = hgcmd.replace("'", '"')
47640
119673fb37aa dummyssh: use subprocess instead of os.call
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45830
diff changeset
    34
r = subprocess.call(hgcmd, shell=True)
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
    35
sys.exit(bool(r))