133
133
self.assertTrue(('foo', 'bar') and ('foo1', 'bar1') in \
134
134
[(k, v) for k, v in shelf.items()])
136
def test_broked_metadata_without_backup(self):
136
def test_broken_metadata_without_backup(self):
137
137
"""test the shelf behavior when it hit a broken metadata file without
148
148
f.write(BROKEN_PICKLE)
149
149
self.assertRaises(KeyError, self.shelf.__getitem__, 'broken_pickle')
151
def test_broked_metadata_with_backup(self):
151
def test_broken_metadata_with_backup(self):
152
152
"""test that each time a metadata file is updated a .old is kept"""
153
153
self.shelf['bad_file'] = {'value':'old'}
154
154
path = self.shelf.key_file('bad_file')
254
254
self.assertEquals(shelf.values['foo'],
255
255
cPickle.dumps('bar', protocol=2))
257
def test_broken_metadata_iteritems(self):
258
"""Test that broken metadata is ignored during iteritems."""
259
self.shelf['ok_key'] = {'status':'this is valid metadata'}
260
self.shelf['bad_file'] = {}
261
path = self.shelf.key_file('bad_file')
262
open(path, 'w').close()
263
self.assertRaises(KeyError, self.shelf.__getitem__, 'bad_file')
264
self.assertEquals(1, len(list(self.shelf.iteritems())))
265
self.assertFalse(os.path.exists(path))
267
self.shelf['broken_pickle'] = {}
268
path = self.shelf.key_file('broken_pickle')
269
with open(path, 'w') as f:
270
f.write(BROKEN_PICKLE)
271
self.assertRaises(KeyError, self.shelf.__getitem__, 'broken_pickle')
272
self.assertEquals(1, len(list(self.shelf.iteritems())))
273
self.assertFalse(os.path.exists(path))
275
def test_broken_metadata_items(self):
276
"""Test that broken metadata is ignored during iteritems."""
277
self.shelf['ok_key'] = {'status':'this is valid metadata'}
278
self.shelf['bad_file'] = {}
279
path = self.shelf.key_file('bad_file')
280
open(path, 'w').close()
281
self.assertRaises(KeyError, self.shelf.__getitem__, 'bad_file')
282
self.assertEquals(1, len(list(self.shelf.items())))
283
self.assertFalse(os.path.exists(path))
285
self.shelf['broken_pickle'] = {}
286
path = self.shelf.key_file('broken_pickle')
287
with open(path, 'w') as f:
288
f.write(BROKEN_PICKLE)
289
self.assertRaises(KeyError, self.shelf.__getitem__, 'broken_pickle')
290
self.assertEquals(1, len(list(self.shelf.items())))
291
self.assertFalse(os.path.exists(path))
258
294
class CachedFileShelfTests(TestFileShelf):
259
295
"""TestFileShelf tests but using CachedFileShelf"""
273
309
self.shelf['realkey']
274
310
self.assertEquals(self.shelf.cache_hits, 1)
276
def test_broked_metadata_with_backup(self):
312
def test_broken_metadata_with_backup(self):
277
313
"""overrides parent test as we have the value in the cache."""
278
314
self.shelf['bad_file'] = {'value':'old'}
279
315
path = self.shelf.key_file('bad_file')