/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/tree_implementations/test_inv.py

  • Committer: Martin Pool
  • Date: 2008-05-08 04:33:38 UTC
  • mfrom: (3414 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3415.
  • Revision ID: mbp@sourcefrog.net-20080508043338-ru3vflx8z641a76k
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007 Canonical Ltd
 
1
# Copyright (C) 2007, 2008 Canonical Ltd
2
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
23
23
from bzrlib.diff import internal_diff
24
24
from bzrlib.mutabletree import MutableTree
25
25
from bzrlib.osutils import has_symlinks
26
 
from bzrlib.symbol_versioning import zero_ninetyone, one_zero
27
26
from bzrlib.tests import SymlinkFeature, TestSkipped
28
27
from bzrlib.tests.tree_implementations import TestCaseWithTree
 
28
from bzrlib.transform import _PreviewTree
29
29
from bzrlib.uncommit import uncommit
30
30
 
31
31
 
 
32
def get_entry(tree, file_id):
 
33
    return tree.iter_entries_by_dir([file_id]).next()[1]
 
34
 
 
35
 
32
36
class TestPreviousHeads(TestCaseWithTree):
33
37
 
34
38
    def setUp(self):
59
63
        self.tree = self.workingtree_to_test_tree(self.wt)
60
64
        self.tree.lock_read()
61
65
        self.addCleanup(self.tree.unlock)
62
 
        self.file_active = self.tree.inventory['fileid']
 
66
        self.file_active = get_entry(self.tree, 'fileid')
63
67
        self.weave = self.branch.repository.weave_store.get_weave('fileid',
64
68
            self.branch.repository.get_transaction())
65
 
        
66
 
    def get_previous_heads(self, inventories):
67
 
        return self.applyDeprecated(zero_ninetyone,
68
 
            self.file_active.find_previous_heads,
69
 
            inventories,
70
 
            self.branch.repository.weave_store,
71
 
            self.branch.repository.get_transaction())
72
 
        
73
 
    def test_fileid_in_no_inventory(self):
74
 
        self.assertEqual({}, self.get_previous_heads([self.inv_A]))
75
 
 
76
 
    def test_fileid_in_one_inventory(self):
77
 
        self.assertEqual({'B':self.inv_B['fileid']},
78
 
                         self.get_previous_heads([self.inv_B]))
79
 
        self.assertEqual({'B':self.inv_B['fileid']},
80
 
                         self.get_previous_heads([self.inv_A, self.inv_B]))
81
 
        self.assertEqual({'B':self.inv_B['fileid']},
82
 
                         self.get_previous_heads([self.inv_B, self.inv_A]))
83
 
 
84
 
    def test_fileid_in_two_inventories_gives_both_entries(self):
85
 
        self.assertEqual({'B':self.inv_B['fileid'],
86
 
                          'C':self.inv_C['fileid']},
87
 
                          self.get_previous_heads([self.inv_B, self.inv_C]))
88
 
        self.assertEqual({'B':self.inv_B['fileid'],
89
 
                          'C':self.inv_C['fileid']},
90
 
                          self.get_previous_heads([self.inv_C, self.inv_B]))
91
 
 
92
 
    def test_fileid_in_two_inventories_already_merged_gives_head(self):
93
 
        self.assertEqual({'D':self.inv_D['fileid']},
94
 
                         self.get_previous_heads([self.inv_B, self.inv_D]))
95
 
        self.assertEqual({'D':self.inv_D['fileid']},
96
 
                         self.get_previous_heads([self.inv_D, self.inv_B]))
97
 
 
98
 
    # TODO: test two inventories with the same file revision 
 
69
 
 
70
    # TODO: test two inventories with the same file revision
99
71
 
100
72
 
101
73
class TestInventory(TestCaseWithTree):
104
76
        self.tree = self.get_tree_with_subdirs_and_all_content_types()
105
77
        self.tree.lock_read()
106
78
        self.addCleanup(self.tree.unlock)
107
 
        # Commenting out the following line still fails.
108
 
        self.inv = self.tree.inventory
109
79
 
110
80
    def test_symlink_target(self):
111
81
        self.requireFeature(SymlinkFeature)
112
82
        self._set_up()
113
 
        if isinstance(self.tree, MutableTree):
 
83
        if isinstance(self.tree, (MutableTree, _PreviewTree)):
114
84
            raise TestSkipped(
115
 
                'symlinks not accurately represented in working trees')
116
 
        entry = self.inv[self.inv.path2id('symlink')]
 
85
                'symlinks not accurately represented in working trees and'
 
86
                ' preview trees')
 
87
        entry = get_entry(self.tree, self.tree.path2id('symlink'))
117
88
        self.assertEqual(entry.symlink_target, 'link-target')
118
89
 
 
90
    def test_symlink_target_tree(self):
 
91
        self.requireFeature(SymlinkFeature)
 
92
        self._set_up()
 
93
        self.assertEqual('link-target',
 
94
                         self.tree.get_symlink_target('symlink'))
 
95
 
 
96
    def test_kind_symlink(self):
 
97
        self.requireFeature(SymlinkFeature)
 
98
        self._set_up()
 
99
        self.assertEqual('symlink', self.tree.kind('symlink'))
 
100
        self.assertIs(None, self.tree.get_file_size('symlink'))
 
101
 
119
102
    def test_symlink(self):
120
103
        self.requireFeature(SymlinkFeature)
121
104
        self._set_up()
122
 
        entry = self.inv[self.inv.path2id('symlink')]
 
105
        entry = get_entry(self.tree, self.tree.path2id('symlink'))
123
106
        self.assertEqual(entry.kind, 'symlink')
124
107
        self.assertEqual(None, entry.text_size)