Mercurial > hg
changeset 32269:ed2c44741190
scmutil: add simplekeyvaluefile reading test
Before this patch, mockvfs did not emulate readlines correctly
and there was no test for simplekeyvaluefile reading.
author | Kostia Balytskyi <ikostia@fb.com> |
---|---|
date | Thu, 11 May 2017 08:39:44 -0700 |
parents | 24f55686a63d |
children | 218ca8526ec0 |
files | mercurial/scmutil.py tests/test-simplekeyvaluefile.py |
diffstat | 2 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Tue May 02 18:57:52 2017 +0200 +++ b/mercurial/scmutil.py Thu May 11 08:39:44 2017 -0700 @@ -925,7 +925,10 @@ def read(self): lines = self.vfs.readlines(self.path) try: - d = dict(line[:-1].split('=', 1) for line in lines if line) + # the 'if line.strip()' part prevents us from failing on empty + # lines which only contain '\n' therefore are not skipped + # by 'if line' + d = dict(line[:-1].split('=', 1) for line in lines if line.strip()) except ValueError as e: raise error.CorruptedState(str(e)) return d
--- a/tests/test-simplekeyvaluefile.py Tue May 02 18:57:52 2017 +0200 +++ b/tests/test-simplekeyvaluefile.py Thu May 11 08:39:44 2017 -0700 @@ -33,7 +33,8 @@ return mockfile(path, self).read() def readlines(self, path): - return mockfile(path, self).read().split('\n') + # 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) @@ -42,11 +43,13 @@ def setUp(self): self.vfs = mockvfs() - def testbasicwriting(self): - d = {'key1': 'value1', 'Key2': 'value2'} - scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write(d) + 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'}