Mercurial > hg
changeset 35752:047581ddb6ce
sshserver: add a couple of tests for argument parsing
I noticed that we didn't have any unit tests covering wire protocol argument
parsing.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Fri, 19 Jan 2018 14:25:09 -0800 |
parents | 6d65cef5b038 |
children | 069df0b952e8 |
files | tests/test-sshserver.py |
diffstat | 1 files changed, 44 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-sshserver.py Fri Jan 19 14:25:09 2018 -0800 @@ -0,0 +1,44 @@ +from __future__ import absolute_import, print_function + +import io +import unittest + +import silenttestrunner + +from mercurial import ( + sshserver, + wireproto, +) + +class SSHServerGetArgsTests(unittest.TestCase): + def testparseknown(self): + tests = [ + ('* 0\nnodes 0\n', ['', {}]), + ('* 0\nnodes 40\n1111111111111111111111111111111111111111\n', + ['1111111111111111111111111111111111111111', {}]), + ] + for input, expected in tests: + self.assertparse('known', input, expected) + + def assertparse(self, cmd, input, expected): + server = mockserver(input) + _func, spec = wireproto.commands[cmd] + self.assertEqual(server.getargs(spec), expected) + +def mockserver(inbytes): + ui = mockui(inbytes) + repo = mockrepo(ui) + return sshserver.sshserver(ui, repo) + +class mockrepo(object): + def __init__(self, ui): + self.ui = ui + +class mockui(object): + def __init__(self, inbytes): + self.fin = io.BytesIO(inbytes) + self.fout = io.BytesIO() + self.ferr = io.BytesIO() + +if __name__ == '__main__': + silenttestrunner.main(__name__)