annotate tests/dummyssh @ 51721:ed28085827ec

typing: explicitly type some `mercurial.util` eol code to avoid @overload Unlike the previous commit, this makes a material difference in the generated stub file- the `pycompat.identity()` aliases generated an @overload like this: @overload def fromnativeeol(a: _T0) -> _T0: ... ... which might fail to detect a bad argument, like str. This drops the @overload for the 3 related methods, so there's a single definition for each. The `typelib.BinaryIO_Proxy` is used for subclassing (the same as was done in 8147abc05794), so that it is a `BinaryIO` type during type checking, but still inherits `object` at runtime. That way, we don't need to implement unused abstract methods.
author Matt Harbison <matt_harbison@yahoo.com>
date Fri, 19 Jul 2024 16:49:46 -0400
parents 6000f5b25c9b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
26d4ce8ca2bd py3: make tests/dummyssh use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 19320
diff changeset
4 import os
47641
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
5 import shlex
47640
119673fb37aa dummyssh: use subprocess instead of os.call
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45830
diff changeset
6 import subprocess
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
7 import sys
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
8
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
9 os.chdir(os.getenv('TESTTMP'))
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
10
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
11 if sys.argv[1] != "user@dummy":
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
12 sys.exit(-1)
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
13
31007
bfdb0741f9f2 dummyssh: use LOCALIP
Jun Wu <quark@fb.com>
parents: 29159
diff changeset
14 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
15
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
16 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
17 log.write(b"Got arguments")
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
18 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
19 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
20 log.write(b"\n")
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
21 log.close()
15768
cdf9c43445df tests: make simple single quotes work with dummyssh on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 14186
diff changeset
22 hgcmd = sys.argv[2]
cdf9c43445df tests: make simple single quotes work with dummyssh on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 14186
diff changeset
23 if os.name == 'nt':
cdf9c43445df tests: make simple single quotes work with dummyssh on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 14186
diff changeset
24 # 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
25 hgcmd = hgcmd.replace("'", '"')
47641
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
26 cmds = shlex.split(hgcmd)
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
27 if cmds[0].endswith('.py'):
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
28 python_exe = os.environ['PYTHON']
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
29 cmds.insert(0, python_exe)
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
30 hgcmd = shlex.join(cmds)
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
31 # shlex generate windows incompatible string...
5d9f89cd4984 dummyssh: call python script with python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47640
diff changeset
32 hgcmd = hgcmd.replace("'", '"')
47774
fb8389f227a0 dummyssh: make sure we don't inherit files descriptor to the children
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47641
diff changeset
33 r = subprocess.call(hgcmd, shell=True, close_fds=True)
14186
8513bd2e7259 tests: share dummyssh
Mads Kiilerich <mads@kiilerich.com>
parents:
diff changeset
34 sys.exit(bool(r))