def testfirstline(self): dw = {b'key1': b'value1'} scmutil.simplekeyvaluefile(self.vfs, b'fl').write(dw, firstline=b'1.0') self.assertEqual(self.vfs.read(b'fl'), b'1.0\nkey1=value1\n') dr = scmutil.simplekeyvaluefile(self.vfs, b'fl')\ .read(firstlinenonkeyval=True) self.assertEqual(dr, {b'__firstline': b'1.0', b'key1': b'value1'})
def testbasicwritingiandreading(self): dw = {b'key1': b'value1', b'Key2': b'value2'} scmutil.simplekeyvaluefile(self.vfs, b'kvfile').write(dw) self.assertEqual(sorted(self.vfs.read(b'kvfile').split(b'\n')), [b'', b'Key2=value2', b'key1=value1']) dr = scmutil.simplekeyvaluefile(self.vfs, b'kvfile').read() self.assertEqual(dr, dw)
def testinvalidkeys(self): d = {b'0key1': b'value1', b'Key2': b'value2'} with self.assertRaisesRegex(error.ProgrammingError, 'keys must start with a letter.*'): scmutil.simplekeyvaluefile(self.vfs, b'kvfile').write(d) d = {b'key1@': b'value1', b'Key2': b'value2'} with self.assertRaisesRegex(error.ProgrammingError, 'invalid key.*'): scmutil.simplekeyvaluefile(self.vfs, b'kvfile').write(d)
def save(cls, repo, name, originalwctx, pendingctx, nodestoremove, branchtorestore, keep=False, activebook=''): info = { "name": name, "originalwctx": nodemod.hex(originalwctx.node()), "pendingctx": nodemod.hex(pendingctx.node()), "parents": ' '.join([nodemod.hex(p) for p in repo.dirstate.parents()]), "nodestoremove": ' '.join([nodemod.hex(n) for n in nodestoremove]), "branchtorestore": branchtorestore, "keep": cls._keep if keep else cls._nokeep, "activebook": activebook or cls._noactivebook } scmutil.simplekeyvaluefile(repo.vfs, cls._filename)\ .write(info, firstline=("%d" % cls._version))
def load(cls, repo): version = cls._getversion(repo) if version < cls._version: d = cls._readold(repo) elif version == cls._version: d = scmutil.simplekeyvaluefile(repo.vfs, cls._filename)\ .read(firstlinenonkeyval=True) else: raise error.Abort(_('this version of shelve is incompatible ' 'with the version used in this repo')) cls._verifyandtransform(d) try: obj = cls() obj.name = d['name'] obj.wctx = repo[d['originalwctx']] obj.pendingctx = repo[d['pendingctx']] obj.parents = d['parents'] obj.nodestoremove = d['nodestoremove'] obj.branchtorestore = d.get('branchtorestore', '') obj.keep = d.get('keep') == cls._keep obj.activebookmark = '' if d.get('activebook', '') != cls._noactivebook: obj.activebookmark = d.get('activebook', '') except (error.RepoLookupError, KeyError) as err: raise error.CorruptedState(pycompat.bytestr(err)) return obj
def load(cls, repo): version = cls._getversion(repo) if version < cls._version: d = cls._readold(repo) elif version == cls._version: d = scmutil.simplekeyvaluefile(repo.vfs, cls._filename)\ .read(firstlinenonkeyval=True) else: raise error.Abort(_('this version of shelve is incompatible ' 'with the version used in this repo')) cls._verifyandtransform(d) try: obj = cls() obj.name = d['name'] obj.wctx = repo[d['originalwctx']] obj.pendingctx = repo[d['pendingctx']] obj.parents = d['parents'] obj.nodestoremove = d['nodestoremove'] obj.branchtorestore = d.get('branchtorestore', '') obj.keep = d.get('keep') == cls._keep obj.activebookmark = '' if d.get('activebook', '') != cls._noactivebook: obj.activebookmark = d.get('activebook', '') obj.obsshelve = d['obsshelve'] == cls._obsbased except (error.RepoLookupError, KeyError) as err: raise error.CorruptedState(str(err)) return obj
def save(cls, repo, name, originalwctx, pendingctx, nodestoremove, branchtorestore, keep=False, activebook='', obsshelve=False): info = { "name": name, "originalwctx": nodemod.hex(originalwctx.node()), "pendingctx": nodemod.hex(pendingctx.node()), "parents": ' '.join([nodemod.hex(p) for p in repo.dirstate.parents()]), "nodestoremove": ' '.join([nodemod.hex(n) for n in nodestoremove]), "branchtorestore": branchtorestore, "keep": cls._keep if keep else cls._nokeep, "activebook": activebook or cls._noactivebook, "obsshelve": cls._obsbased if obsshelve else cls._traditional, } scmutil.simplekeyvaluefile(repo.vfs, cls._filename)\ .write(info, firstline=str(cls._version))
def readobsshelveinfo(self): return scmutil.simplekeyvaluefile(self.vfs, self.fname).read()
def writeobsshelveinfo(self, info): scmutil.simplekeyvaluefile(self.vfs, self.fname).write(info)
def readobsshelveinfo(self): return scmutil.simplekeyvaluefile(self.vfs, self.fname).read()
def writeobsshelveinfo(self, info): scmutil.simplekeyvaluefile(self.vfs, self.fname).write(info)
def testcorruptedfile(self): self.vfs.contents[b'badfile'] = b'ababagalamaga\n' with self.assertRaisesRegex(error.CorruptedState, 'dictionary.*element.*'): scmutil.simplekeyvaluefile(self.vfs, b'badfile').read()
def testinvalidvalues(self): d = {b'key1': b'value1', b'Key2': b'value2\n'} with self.assertRaisesRegex(error.ProgrammingError, 'invalid val.*'): scmutil.simplekeyvaluefile(self.vfs, b'kvfile').write(d)