tests/test-dispatch.py
author Matt Harbison <matt_harbison@yahoo.com>
Sat, 28 Sep 2024 19:11:39 -0400
changeset 51932 d94e21b5b693
parent 48875 6000f5b25c9b
permissions -rw-r--r--
mdiff: tweak calls into `bdiff.fixws` to match its type hints It turns out that protocol classes can be used for modules too, which is great because all of the dynamically loaded modules (and their attributes) are currently inferred as `Any`. See the next commit for details. A protocol class for the `bdiff` module detected this (trivial) mismatch, so correct it first. The various implementations of this method are typed as taking a `bool`. The `cext` implementation parses its arguments with `PyArg_ParseTuple(args, "Sb:fixws", &s, &allws)`, which wants an `int`. But experimenting in `hg debugshell` under py38, passing `True` or `False` to `cext.fixws()` also works. We can change the implementation to use "p" (which was introduced in py33) instead of "b", but that's beyond the scope of this.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     1
import os
37924
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
     2
import sys
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37924
diff changeset
     3
from mercurial import dispatch
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37924
diff changeset
     4
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
     5
37924
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
     6
def printb(data, end=b'\n'):
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
     7
    out = getattr(sys.stdout, 'buffer', sys.stdout)
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
     8
    out.write(data + end)
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
     9
    out.flush()
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
    10
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37924
diff changeset
    11
5178
18a9fbb5cd78 dispatch: move command dispatching into its own module
Matt Mackall <mpm@selenic.com>
parents: 5095
diff changeset
    12
def testdispatch(cmd):
18a9fbb5cd78 dispatch: move command dispatching into its own module
Matt Mackall <mpm@selenic.com>
parents: 5095
diff changeset
    13
    """Simple wrapper around dispatch.dispatch()
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    14
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    15
    Prints command and result value, but does not handle quoting.
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    16
    """
37924
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
    17
    printb(b"running: %s" % (cmd,))
14438
08bfec2ef031 dispatch: wrap dispatch related information in a request class
Idan Kamara <idankk86@gmail.com>
parents: 9031
diff changeset
    18
    req = dispatch.request(cmd.split())
08bfec2ef031 dispatch: wrap dispatch related information in a request class
Idan Kamara <idankk86@gmail.com>
parents: 9031
diff changeset
    19
    result = dispatch.dispatch(req)
37924
32106c474086 tests: port test-dispatch.py to Python 3
Augie Fackler <augie@google.com>
parents: 36374
diff changeset
    20
    printb(b"result: %r" % (result,))
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    21
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37924
diff changeset
    22
36374
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    23
testdispatch(b"init test1")
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    24
os.chdir('test1')
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    25
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    26
# create file 'foo', add and commit
9031
3b76321aa0de compat: use open() instead of file() everywhere
Alejandro Santos <alejolp@alejolp.com>
parents: 5178
diff changeset
    27
f = open('foo', 'wb')
36374
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    28
f.write(b'foo\n')
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    29
f.close()
36374
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    30
testdispatch(b"add foo")
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    31
testdispatch(b"commit -m commit1 -d 2000-01-01 foo")
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    32
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    33
# append to file 'foo' and commit
9031
3b76321aa0de compat: use open() instead of file() everywhere
Alejandro Santos <alejolp@alejolp.com>
parents: 5178
diff changeset
    34
f = open('foo', 'ab')
36374
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    35
f.write(b'bar\n')
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    36
f.close()
36374
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    37
testdispatch(b"commit -m commit2 -d 2000-01-02 foo")
5095
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    38
f3f033def181 Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff changeset
    39
# check 88803a69b24 (fancyopts modified command table)
36374
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    40
testdispatch(b"log -r 0")
f0c94af0d70d py3: add b'' prefixes in test-dispatch.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 28405
diff changeset
    41
testdispatch(b"log -r tip")