Use StableDict in a few more places

This commit is contained in:
Jonas Borgström 2014-02-18 23:09:12 +01:00
parent 7b31f23722
commit d551b13a23
3 changed files with 5 additions and 6 deletions

View File

@ -178,7 +178,7 @@ class Archive:
if name in self.manifest.archives:
raise self.AlreadyExists(name)
self.items_buffer.flush(flush=True)
metadata = {
metadata = StableDict({
'version': 1,
'name': name,
'items': self.items_buffer.chunks,
@ -186,7 +186,7 @@ class Archive:
'hostname': socket.gethostname(),
'username': getuser(),
'time': datetime.utcnow().isoformat(),
}
})
data = msgpack.packb(metadata, unicode_errors='surrogateescape')
self.id = self.key.id_hash(data)
self.cache.add_chunk(self.id, data, self.stats)
@ -570,7 +570,7 @@ class ArchiveChecker:
items_buffer.write_chunk = add_callback
cdata = self.repository.get(archive_id)
data = self.key.decrypt(archive_id, cdata)
archive = msgpack.unpackb(data)
archive = StableDict(msgpack.unpackb(data))
if archive[b'version'] != 1:
raise Exception('Unknown archive metadata version')
decode_dict(archive, (b'name', b'hostname', b'username', b'time')) # fixme: argv

View File

@ -83,12 +83,12 @@ class Manifest:
def write(self):
self.timestamp = datetime.utcnow().isoformat()
data = msgpack.packb({
data = msgpack.packb(StableDict({
'version': 1,
'archives': self.archives,
'timestamp': self.timestamp,
'config': self.config,
})
}))
self.id = self.key.id_hash(data)
self.repository.put(self.MANIFEST_ID, self.key.encrypt(data))

View File

@ -228,7 +228,6 @@ class ArchiverTestCase(ArchiverTestCaseBase):
fd.seek(100)
fd.write('XXXX')
fd.close()
self.assert_raises(IntegrityError, lambda: self.attic('extract', '--dry-run', self.repository_location + '::test'))
self.attic('check', self.repository_location, exit_code=1)
def test_readonly_repository(self):