Mercurial > hg
view tests/test-sshserver.py @ 35998:dce43aaaf209
lfs: allow a pointer to be extracted from a context that removes the file
This is needed to let 'set:lfs()' and '{lfs_files}' work normally on removed
files.
Yuya suggested returning a null pointer for removed files, instead of the
pointer from the parent. The first attempt at this was to return None for a non
LFS file, and a (pointer, ctx) tuple to hold the pointer and context (or parent
pointer and context for a removed file). But this complicated the callers, even
the ones that didn't care about removed files.
Instead, let's use {} to represent a removed pointer. This has the added
convenience of being a useful representation in the template language, and only
affects the callers that care about removed files (and only slightly). Since
pointers are explicitly serialized with a call to a member function, there is no
danger of writing these to disk.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 27 Jan 2018 18:56:24 -0500 |
parents | 1bf5263fe5cc |
children | bf676267f64f |
line wrap: on
line source
from __future__ import absolute_import, print_function import io import unittest import silenttestrunner from mercurial import ( util, wireproto, wireprotoserver, ) 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 wireprotoserver.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__': # Don't call into msvcrt to set BytesIO to binary mode util.setbinary = lambda fp: True silenttestrunner.main(__name__)