Mercurial > hg
view tests/test-simplekeyvaluefile.py @ 37561:8478b198af9c
tests: add tests showing pulling from infinitepush works over wire
The current tests in test-infinitepush-ci.t showed that `hg pull -r <rev>` does
not work. Digging in code, I found that we have logic for pulling from
bundlestore without having client side logic. This patch adds test demonstrating
that pulling from bundlestore works when working over wire.
Pulling from bundlestore when the peer is a localpeer still does not works.
Differential Revision: https://phab.mercurial-scm.org/D3072
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Wed, 04 Apr 2018 17:37:35 +0530 |
parents | 68c43a416585 |
children | 1859b9a7ddef |
line wrap: on
line source
from __future__ import absolute_import import unittest import silenttestrunner from mercurial import ( error, scmutil, ) class mockfile(object): def __init__(self, name, fs): self.name = name self.fs = fs def __enter__(self): return self def __exit__(self, *args, **kwargs): pass def write(self, text): self.fs.contents[self.name] = text def read(self): return self.fs.contents[self.name] class mockvfs(object): def __init__(self): self.contents = {} def read(self, path): return mockfile(path, self).read() def readlines(self, path): # lines need to contain the trailing '\n' to mock the real readlines return [l for l in mockfile(path, self).read().splitlines(True)] def __call__(self, path, mode, atomictemp): return mockfile(path, self) class testsimplekeyvaluefile(unittest.TestCase): def setUp(self): self.vfs = mockvfs() def testbasicwritingiandreading(self): dw = {'key1': 'value1', 'Key2': 'value2'} scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write(dw) self.assertEqual(sorted(self.vfs.read('kvfile').split('\n')), ['', 'Key2=value2', 'key1=value1']) dr = scmutil.simplekeyvaluefile(self.vfs, 'kvfile').read() self.assertEqual(dr, dw) def testinvalidkeys(self): d = {'0key1': 'value1', 'Key2': 'value2'} with self.assertRaisesRegexp(error.ProgrammingError, 'keys must start with a letter.*'): scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write(d) d = {'key1@': 'value1', 'Key2': 'value2'} with self.assertRaisesRegexp(error.ProgrammingError, 'invalid key.*'): scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write(d) def testinvalidvalues(self): d = {'key1': 'value1', 'Key2': 'value2\n'} with self.assertRaisesRegexp(error.ProgrammingError, 'invalid val.*'): scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write(d) def testcorruptedfile(self): self.vfs.contents['badfile'] = 'ababagalamaga\n' with self.assertRaisesRegexp(error.CorruptedState, 'dictionary.*element.*'): scmutil.simplekeyvaluefile(self.vfs, 'badfile').read() def testfirstline(self): dw = {'key1': 'value1'} scmutil.simplekeyvaluefile(self.vfs, 'fl').write(dw, firstline='1.0') self.assertEqual(self.vfs.read('fl'), '1.0\nkey1=value1\n') dr = scmutil.simplekeyvaluefile(self.vfs, 'fl')\ .read(firstlinenonkeyval=True) self.assertEqual(dr, {'__firstline': '1.0', 'key1': 'value1'}) if __name__ == "__main__": silenttestrunner.main(__name__)