Mercurial > hg
annotate tests/dummyssh @ 49603:3eda36e9b3d6 stable
matcher: fix issues regex flag contained in pattern (issue6759)
Python 3.11 is now enforcing that flag must be at the beginning of the regex
This creates a serious regression for people using Python 3.11 with an hgignore
using flag in a "relre" pattern.
We now detect any flags in such pattern and "prepend" our ".*" pattern after them.
In addition, we now insert the flag in the regexp to only affect the pattern we
are rewriting. Otherwise, the regex built from the combined pattern would these
flags in the middle of it anyway.
As a side effect of this last change, we fix a bug… before this change regex
flag in a pattern would affect all combined patterns. That was bad and is not
longer the case.
The Rust code needs to be updated to fix that very bug, but we will do it in
another changeset.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 16 Nov 2022 13:05:01 +0100 |
parents | 6000f5b25c9b |
children |
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 | 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 | 7 import sys |
8 | |
9 os.chdir(os.getenv('TESTTMP')) | |
10 | |
11 if sys.argv[1] != "user@dummy": | |
12 sys.exit(-1) | |
13 | |
31007 | 14 os.environ["SSH_CLIENT"] = "%s 1 2" % os.environ.get('LOCALIP', '127.0.0.1') |
14186 | 15 |
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 | 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 | 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 | 34 sys.exit(bool(r)) |