test-sshserver.py
64 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
/ tests / test-sshserver.py
Siddharth Agarwal
|
r35770 | from __future__ import absolute_import, print_function | ||
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) | ||||
Augie Fackler
|
r43346 | proto = wireprotoserver.sshv1protocolhandler( | ||
server._ui, server._fin, server._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) | ||||
Gregory Szorc
|
r35877 | return wireprotoserver.sshserver(ui, repo) | ||
Siddharth Agarwal
|
r35770 | |||
Augie Fackler
|
r43346 | |||
Siddharth Agarwal
|
r35770 | class mockrepo(object): | ||
def __init__(self, ui): | ||||
self.ui = ui | ||||
Augie Fackler
|
r43346 | |||
Siddharth Agarwal
|
r35770 | class mockui(object): | ||
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__) | ||