test-sshserver.py
64 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
/ tests / test-sshserver.py
Siddharth Agarwal
|
r35770 | import io | ||
import unittest | ||||
import silenttestrunner | ||||
from mercurial import ( | ||||
Gregory Szorc
|
r35877 | wireprotoserver, | ||
Gregory Szorc
|
r37803 | wireprotov1server, | ||
Siddharth Agarwal
|
r35770 | ) | ||
Augie Fackler
|
r43346 | from mercurial.utils import procutil | ||
Yuya Nishihara
|
r37138 | |||
Siddharth Agarwal
|
r35770 | class SSHServerGetArgsTests(unittest.TestCase): | ||
def testparseknown(self): | ||||
tests = [ | ||||
Gregory Szorc
|
r36230 | (b'* 0\nnodes 0\n', [b'', {}]), | ||
Augie Fackler
|
r43346 | ( | ||
b'* 0\nnodes 40\n1111111111111111111111111111111111111111\n', | ||||
[b'1111111111111111111111111111111111111111', {}], | ||||
), | ||||
Siddharth Agarwal
|
r35770 | ] | ||
for input, expected in tests: | ||||
Gregory Szorc
|
r36230 | self.assertparse(b'known', input, expected) | ||
Siddharth Agarwal
|
r35770 | |||
def assertparse(self, cmd, input, expected): | ||||
server = mockserver(input) | ||||
Arseniy Alekseyev
|
r52465 | ui = server._ui | ||
proto = wireprotoserver.sshv1protocolhandler(ui, ui.fin, ui.fout) | ||||
Gregory Szorc
|
r37803 | _func, spec = wireprotov1server.commands[cmd] | ||
Gregory Szorc
|
r36232 | self.assertEqual(proto.getargs(spec), expected) | ||
Siddharth Agarwal
|
r35770 | |||
Augie Fackler
|
r43346 | |||
Siddharth Agarwal
|
r35770 | def mockserver(inbytes): | ||
ui = mockui(inbytes) | ||||
repo = mockrepo(ui) | ||||
Arseniy Alekseyev
|
r52465 | # note: this test unfortunately doesn't really test anything about | ||
# `sshserver` class anymore: the entirety of logic of that class lives | ||||
# in `serveuntil`, and that function is not even called by this test. | ||||
Gregory Szorc
|
r35877 | return wireprotoserver.sshserver(ui, repo) | ||
Siddharth Agarwal
|
r35770 | |||
Augie Fackler
|
r43346 | |||
Gregory Szorc
|
r49801 | class mockrepo: | ||
Siddharth Agarwal
|
r35770 | def __init__(self, ui): | ||
self.ui = ui | ||||
Augie Fackler
|
r43346 | |||
Gregory Szorc
|
r49801 | class mockui: | ||
Siddharth Agarwal
|
r35770 | def __init__(self, inbytes): | ||
self.fin = io.BytesIO(inbytes) | ||||
self.fout = io.BytesIO() | ||||
self.ferr = io.BytesIO() | ||||
Yuya Nishihara
|
r41321 | def protectfinout(self): | ||
return self.fin, self.fout | ||||
def restorefinout(self, fin, fout): | ||||
pass | ||||
Augie Fackler
|
r43346 | |||
Siddharth Agarwal
|
r35770 | if __name__ == '__main__': | ||
Matt Harbison
|
r35790 | # Don't call into msvcrt to set BytesIO to binary mode | ||
Yuya Nishihara
|
r37138 | procutil.setbinary = lambda fp: True | ||
Siddharth Agarwal
|
r35770 | silenttestrunner.main(__name__) | ||