38
38
f = store.get(fileid)
39
39
self.assertEqual(f.read(), value)
41
def test_add_str_deprecated(self):
43
store = self.get_store('a')
44
self.callDeprecated(['Passing a string to Store.add'
45
' was deprecated in version 0.11.'],
46
store.add, 'foo', '1')
47
self.assertEqual('foo', store.get('1').read())
41
49
def fill_store(self, store):
42
50
store.add(StringIO('hello'), 'a')
43
51
store.add(StringIO('other'), 'b')
399
407
def test_escaped_uppercase(self):
400
408
"""Uppercase letters are escaped for safety on Windows"""
401
my_store = store.TransportStore(MemoryTransport(), prefixed=True,
409
my_store = store.TransportStore(MemoryTransport(), escaped=True)
403
410
# a particularly perverse file-id! :-)
404
self.assertEquals(my_store._relpath('C:<>'), 'be/%2543%253a%253c%253e')
411
self.assertEquals(my_store._escape_file_id('C:<>'), '%43%3a%3c%3e')
407
414
class TestVersionFileStore(TestCaseWithTransport):
410
return self._transaction
413
417
super(TestVersionFileStore, self).setUp()
414
418
self.vfstore = store.versioned.VersionedFileStore(MemoryTransport())
415
self.vfstore.get_scope = self.get_scope
416
self._transaction = None
418
420
def test_get_weave_registers_dirty_in_write(self):
419
self._transaction = transactions.WriteTransaction()
420
vf = self.vfstore.get_weave_or_empty('id', self._transaction)
421
self._transaction.finish()
422
self._transaction = None
423
self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
424
self._transaction = transactions.WriteTransaction()
425
vf = self.vfstore.get_weave('id', self._transaction)
426
self._transaction.finish()
427
self._transaction = None
428
self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
421
transaction = transactions.WriteTransaction()
422
vf = self.vfstore.get_weave_or_empty('id', transaction)
424
self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
425
transaction = transactions.WriteTransaction()
426
vf = self.vfstore.get_weave('id', transaction)
428
self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
430
def test_get_weave_or_empty_readonly_fails(self):
431
transaction = transactions.ReadOnlyTransaction()
432
vf = self.assertRaises(errors.ReadOnlyError,
433
self.vfstore.get_weave_or_empty,
430
437
def test_get_weave_readonly_cant_write(self):
431
self._transaction = transactions.WriteTransaction()
432
vf = self.vfstore.get_weave_or_empty('id', self._transaction)
433
self._transaction.finish()
434
self._transaction = transactions.ReadOnlyTransaction()
435
vf = self.vfstore.get_weave_or_empty('id', self._transaction)
438
transaction = transactions.WriteTransaction()
439
vf = self.vfstore.get_weave_or_empty('id', transaction)
441
transaction = transactions.ReadOnlyTransaction()
442
vf = self.vfstore.get_weave_or_empty('id', transaction)
436
443
self.assertRaises(errors.ReadOnlyError, vf.add_lines, 'b', [], [])
438
def test___iter__escaped(self):
439
self.vfstore = store.versioned.VersionedFileStore(MemoryTransport(),
440
prefixed=True, escaped=True)
441
self.vfstore.get_scope = self.get_scope
442
self._transaction = transactions.WriteTransaction()
443
vf = self.vfstore.get_weave_or_empty(' ', self._transaction)
444
vf.add_lines('a', [], [])
446
self._transaction.finish()
447
self.assertEqual([' '], list(self.vfstore))