[PATCH] sshserver: add a couple of tests for argument parsing
Siddharth Agarwal
sid0 at fb.com
Fri Jan 19 22:25:52 UTC 2018
# HG changeset patch
# User Siddharth Agarwal <sid0 at fb.com>
# Date 1516400709 28800
# Fri Jan 19 14:25:09 2018 -0800
# Node ID 897f09345e370f08c019e7025d51e3e7ff3832fb
# 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 --git a/tests/test-sshserver.py b/tests/test-sshserver.py
new file mode 100644
--- /dev/null
+++ b/tests/test-sshserver.py
@@ -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__)
More information about the Mercurial-devel
mailing list