##// END OF EJS Templates
hook: provide hook type information to external hook...
hook: provide hook type information to external hook The python hooks have access to the hook type information. There is not reason for external hook to not be aware of it too. For the record my use case is to make sure a hook script is configured for the right type.

File last commit:

r31585:c6921568 default
r31746:0fa30fbc default
Show More
test-simplekeyvaluefile.py
73 lines | 2.1 KiB | text/x-python | PythonLexer
/ tests / test-simplekeyvaluefile.py
Kostia Balytskyi
scmutil: add a simple key-value file helper...
r31553 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):
return mockfile(path, self).read().split('\n')
def __call__(self, path, mode, atomictemp):
return mockfile(path, self)
class testsimplekeyvaluefile(unittest.TestCase):
def setUp(self):
self.vfs = mockvfs()
def testbasicwriting(self):
d = {'key1': 'value1', 'Key2': 'value2'}
scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write(d)
self.assertEqual(sorted(self.vfs.read('kvfile').split('\n')),
['', 'Key2=value2', 'key1=value1'])
def testinvalidkeys(self):
d = {'0key1': 'value1', 'Key2': 'value2'}
Kostia Balytskyi
tests: make test-simplekeyvaluefile.py py2.6-compatible...
r31585 self.assertRaises(error.ProgrammingError,
scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write,
d)
Kostia Balytskyi
scmutil: add a simple key-value file helper...
r31553 d = {'key1@': 'value1', 'Key2': 'value2'}
Kostia Balytskyi
tests: make test-simplekeyvaluefile.py py2.6-compatible...
r31585 self.assertRaises(error.ProgrammingError,
scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write,
d)
Kostia Balytskyi
scmutil: add a simple key-value file helper...
r31553
def testinvalidvalues(self):
d = {'key1': 'value1', 'Key2': 'value2\n'}
Kostia Balytskyi
tests: make test-simplekeyvaluefile.py py2.6-compatible...
r31585 self.assertRaises(error.ProgrammingError,
scmutil.simplekeyvaluefile(self.vfs, 'kvfile').write,
d)
Kostia Balytskyi
scmutil: add a simple key-value file helper...
r31553
def testcorruptedfile(self):
self.vfs.contents['badfile'] = 'ababagalamaga\n'
Kostia Balytskyi
tests: make test-simplekeyvaluefile.py py2.6-compatible...
r31585 self.assertRaises(error.CorruptedState,
scmutil.simplekeyvaluefile(self.vfs, 'badfile').read)
Kostia Balytskyi
scmutil: add a simple key-value file helper...
r31553
if __name__ == "__main__":
silenttestrunner.main(__name__)