~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_xml.py

  • Committer: John Arbash Meinel
  • Date: 2009-12-03 04:55:02 UTC
  • mto: This revision was merged to the branch mainline in revision 4887.
  • Revision ID: john@arbash-meinel.com-20091203045502-uvhmg6b1yjbzzt8q
Change from being a per-serializer attribute to being a per-repo attribute.
This means we have some churn on *all* of the serializer apis, but it means
we *don't* have churn on all of the repository apis.

It makes it more thread-safe, since serializers are global instances.
Repositories aren't currently thread-safe anyway. (get_record_stream() specifically
is known not to be thread-safe on 2a format repos.)

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
from bzrlib import (
20
20
    errors,
 
21
    fifo_cache,
21
22
    inventory,
22
23
    xml6,
23
24
    xml7,
290
291
                _inventory_v5a, revision_id='test-rev-id')
291
292
        self.assertEqual('test-rev-id', inv.root.revision)
292
293
 
 
294
    def test_unpack_inventory_5a_cache_and_copy(self):
 
295
        # Passing an entry_cache should get populated with the objects
 
296
        # But the returned objects should be copies if return_from_cache is
 
297
        # False
 
298
        entry_cache = fifo_cache.FIFOCache()
 
299
        inv = bzrlib.xml5.serializer_v5.read_inventory_from_string(
 
300
            _inventory_v5a, revision_id='test-rev-id',
 
301
            entry_cache=entry_cache, return_from_cache=False)
 
302
        for entry in inv.iter_just_entries():
 
303
            key = (entry.file_id, entry.revision)
 
304
            if entry.file_id is inv.root.file_id:
 
305
                # The root id is inferred for xml v5
 
306
                self.assertFalse(key in entry_cache)
 
307
            else:
 
308
                self.assertIsNot(entry, entry_cache[key])
 
309
 
 
310
    def test_unpack_inventory_5a_cache_no_copy(self):
 
311
        # Passing an entry_cache should get populated with the objects
 
312
        # The returned objects should be exact if return_from_cache is
 
313
        # True
 
314
        entry_cache = fifo_cache.FIFOCache()
 
315
        inv = bzrlib.xml5.serializer_v5.read_inventory_from_string(
 
316
            _inventory_v5a, revision_id='test-rev-id',
 
317
            entry_cache=entry_cache, return_from_cache=True)
 
318
        for entry in inv.iter_just_entries():
 
319
            key = (entry.file_id, entry.revision)
 
320
            if entry.file_id is inv.root.file_id:
 
321
                # The root id is inferred for xml v5
 
322
                self.assertFalse(key in entry_cache)
 
323
            else:
 
324
                self.assertIs(entry, entry_cache[key])
 
325
 
293
326
    def test_unpack_inventory_5b(self):
294
327
        inv = bzrlib.xml5.serializer_v5.read_inventory_from_string(
295
328
                _inventory_v5b, revision_id='test-rev-id')