~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_store.py

  • Committer: John Arbash Meinel
  • Date: 2006-05-27 01:54:40 UTC
  • mto: (1711.2.26 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1734.
  • Revision ID: john@arbash-meinel.com-20060527015440-1a10495d8e56ed5f
deprecating appendpath, it does exactly what pathjoin does

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2007 Canonical Ltd
2
 
#
 
1
# Copyright (C) 2005 by Canonical Development Ltd
 
2
 
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.
7
 
#
 
7
 
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.
12
 
#
 
12
 
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
48
48
        """Test copying"""
49
49
        os.mkdir('a')
50
50
        store_a = self.get_store('a')
51
 
        store_a.add(StringIO('foo'), '1')
 
51
        store_a.add('foo', '1')
52
52
        os.mkdir('b')
53
53
        store_b = self.get_store('b')
54
54
        store_b.copy_all_ids(store_a)
81
81
class TestCompressedTextStore(TestCaseInTempDir, TestStores):
82
82
 
83
83
    def get_store(self, path=u'.'):
84
 
        t = transport.get_transport(path)
 
84
        t = LocalTransport(path)
85
85
        return TextStore(t, compressed=True)
86
86
 
87
87
    def test_total_size(self):
138
138
class TestTextStore(TestCaseInTempDir, TestStores):
139
139
 
140
140
    def get_store(self, path=u'.'):
141
 
        t = transport.get_transport(path)
 
141
        t = LocalTransport(path)
142
142
        return TextStore(t, compressed=False)
143
143
 
144
144
    def test_total_size(self):
156
156
class TestMixedTextStore(TestCaseInTempDir, TestStores):
157
157
 
158
158
    def get_store(self, path=u'.', compressed=True):
159
 
        t = transport.get_transport(path)
 
159
        t = LocalTransport(path)
160
160
        return TextStore(t, compressed=compressed)
161
161
 
162
162
    def test_get_mixed(self):
398
398
 
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,
402
 
            escaped=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')
405
404
 
406
405
 
407
406
class TestVersionFileStore(TestCaseWithTransport):
408
407
 
409
 
    def get_scope(self):
410
 
        return self._transaction
411
 
 
412
408
    def setUp(self):
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
417
411
 
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)
 
415
        transaction.finish()
 
416
        self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
 
417
        transaction = transactions.WriteTransaction()
 
418
        vf = self.vfstore.get_weave('id', transaction)
 
419
        transaction.finish()
 
420
        self.assertRaises(errors.OutSideTransaction, vf.add_lines, 'b', [], [])
 
421
 
 
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,
 
426
                               'id',
 
427
                               transaction)
429
428
 
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)
 
432
        transaction.finish()
 
433
        transaction = transactions.ReadOnlyTransaction()
 
434
        vf = self.vfstore.get_weave_or_empty('id', transaction)
436
435
        self.assertRaises(errors.ReadOnlyError, vf.add_lines, 'b', [], [])
437
436
 
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', [], [])
445
 
        del vf
446
 
        self._transaction.finish()
447
 
        self.assertEqual([' '], list(self.vfstore))