##// END OF EJS Templates
shortest: make {shortest("fffffffff")} work again...
shortest: make {shortest("fffffffff")} work again {shortest("fffffffff")} should shorten it to the shortest unambiguous prefix for the working directory. It used to do that until I broke it in 7b2955624777 (scmutil: make shortesthexnodeidprefix() take a full binary nodeid, 2018-04-14), when we started returning the full hex nodeid for any working directory prefix shorter than 40 hex digits. This patch fixes it by catching WdirUnsupported specifically. Differential Revision: https://phab.mercurial-scm.org/D3455

File last commit:

r36382:01e29e88 default
r37876:66dc9db6 default
Show More
test-cappedreader.py
91 lines | 2.6 KiB | text/x-python | PythonLexer
/ tests / test-cappedreader.py
from __future__ import absolute_import, print_function
import io
import unittest
from mercurial import (
util,
)
class CappedReaderTests(unittest.TestCase):
def testreadfull(self):
source = io.BytesIO(b'x' * 100)
reader = util.cappedreader(source, 10)
res = reader.read(10)
self.assertEqual(res, b'x' * 10)
self.assertEqual(source.tell(), 10)
source.seek(0)
reader = util.cappedreader(source, 15)
res = reader.read(16)
self.assertEqual(res, b'x' * 15)
self.assertEqual(source.tell(), 15)
source.seek(0)
reader = util.cappedreader(source, 100)
res = reader.read(100)
self.assertEqual(res, b'x' * 100)
self.assertEqual(source.tell(), 100)
source.seek(0)
reader = util.cappedreader(source, 50)
res = reader.read()
self.assertEqual(res, b'x' * 50)
self.assertEqual(source.tell(), 50)
source.seek(0)
def testreadnegative(self):
source = io.BytesIO(b'x' * 100)
reader = util.cappedreader(source, 20)
res = reader.read(-1)
self.assertEqual(res, b'x' * 20)
self.assertEqual(source.tell(), 20)
source.seek(0)
reader = util.cappedreader(source, 100)
res = reader.read(-1)
self.assertEqual(res, b'x' * 100)
self.assertEqual(source.tell(), 100)
source.seek(0)
def testreadmultiple(self):
source = io.BytesIO(b'x' * 100)
reader = util.cappedreader(source, 10)
for i in range(10):
res = reader.read(1)
self.assertEqual(res, b'x')
self.assertEqual(source.tell(), i + 1)
self.assertEqual(source.tell(), 10)
res = reader.read(1)
self.assertEqual(res, b'')
self.assertEqual(source.tell(), 10)
source.seek(0)
reader = util.cappedreader(source, 45)
for i in range(4):
res = reader.read(10)
self.assertEqual(res, b'x' * 10)
self.assertEqual(source.tell(), (i + 1) * 10)
res = reader.read(10)
self.assertEqual(res, b'x' * 5)
self.assertEqual(source.tell(), 45)
def readlimitpasteof(self):
source = io.BytesIO(b'x' * 100)
reader = util.cappedreader(source, 1024)
res = reader.read(1000)
self.assertEqual(res, b'x' * 100)
self.assertEqual(source.tell(), 100)
res = reader.read(1000)
self.assertEqual(res, b'')
self.assertEqual(source.tell(), 100)
if __name__ == '__main__':
import silenttestrunner
silenttestrunner.main(__name__)