# HG changeset patch # User Siddharth Agarwal # Date 1516400709 28800 # Node ID 047581ddb6cefdbdeb50e314b3cc68f7611bddc7 # Parent 6d65cef5b038ff4c141c0bbc1a2e366e45c016a2 sshserver: add a couple of tests for argument parsing I noticed that we didn't have any unit tests covering wire protocol argument parsing. diff -r 6d65cef5b038 -r 047581ddb6ce tests/test-sshserver.py --- /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__)