1
# Copyright (C) 2005, 2007 Canonical Ltd
1
# Copyright (C) 2005 by Canonical Development Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
# GNU General Public License for more details.
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
399
399
def test_escaped_uppercase(self):
400
400
"""Uppercase letters are escaped for safety on Windows"""
401
my_store = store.TransportStore(MemoryTransport(), prefixed=True,
401
my_store = store.TransportStore(MemoryTransport(), escaped=True)
403
402
# a particularly perverse file-id! :-)
404
self.assertEquals(my_store._relpath('C:<>'), 'be/%2543%253a%253c%253e')
403
self.assertEquals(my_store._escape_file_id('C:<>'), '%43%3a%3c%3e')
407
406
class TestVersionFileStore(TestCaseWithTransport):
410
return self._transaction
413
409
super(TestVersionFileStore, self).setUp()
414
410
self.vfstore = store.versioned.VersionedFileStore(MemoryTransport())
415
self.vfstore.get_scope = self.get_scope
416
self._transaction = None
418
412
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', [], [])
413
transaction = transactions.WriteTransaction()
414
vf = self.vfstore.get_weave_or_empty('id', transaction)
416
self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
417
transaction = transactions.WriteTransaction()
418
vf = self.vfstore.get_weave('id', transaction)
420
self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
422
def test_get_weave_or_empty_readonly_fails(self):
423
transaction = transactions.ReadOnlyTransaction()
424
vf = self.assertRaises(errors.ReadOnlyError,
425
self.vfstore.get_weave_or_empty,
430
429
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)
430
transaction = transactions.WriteTransaction()
431
vf = self.vfstore.get_weave_or_empty('id', transaction)
433
transaction = transactions.ReadOnlyTransaction()
434
vf = self.vfstore.get_weave_or_empty('id', transaction)
436
435
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))