Exemplo n.º 1
0
 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'})
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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))
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
 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))
Exemplo n.º 8
0
 def readobsshelveinfo(self):
     return scmutil.simplekeyvaluefile(self.vfs, self.fname).read()
Exemplo n.º 9
0
 def writeobsshelveinfo(self, info):
     scmutil.simplekeyvaluefile(self.vfs, self.fname).write(info)
Exemplo n.º 10
0
 def readobsshelveinfo(self):
     return scmutil.simplekeyvaluefile(self.vfs, self.fname).read()
Exemplo n.º 11
0
 def writeobsshelveinfo(self, info):
     scmutil.simplekeyvaluefile(self.vfs, self.fname).write(info)
Exemplo n.º 12
0
 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()
Exemplo n.º 13
0
 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)