/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
1
from bzrlib.tests import TestCaseInTempDir
2
import os
3
from bzrlib.commit import commit
4
from bzrlib.add import smart_add
5
from bzrlib.branch import Branch
6
from bzrlib.clone import copy_branch
7
from bzrlib.merge import merge
8
from bzrlib.workingtree import WorkingTree
9
from bzrlib.delta import compare_trees
10
11
class TestFileIdInvolved(TestCaseInTempDir):
12
13
    def touch(self,filename):
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
14
        f = file(filename,"a")
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
15
        f.write("appended line\n")
16
        f.close( )
17
18
19
    def merge( self, branch_from, force=False ):
20
        from bzrlib.merge_core import ApplyMerge3
21
22
        merge([branch_from,-1],[None,None], merge_type=ApplyMerge3,
23
            check_clean=(not force) )
24
25
    def setUp(self):
26
        super(TestFileIdInvolved, self).setUp()
27
        # create three branches, and merge it
28
        #
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
29
        #           /-->J ------>K                (branch2)
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
30
        #          /              \
31
        #  A ---> B --->C ---->D->G               (main)
32
        #  \           /      /
33
        #   \---> E---/----> F                 (branch1)
34
35
        os.mkdir("main")
36
        os.chdir("main")
37
38
        main_branch = Branch.initialize('.')
39
        self.build_tree(["a","b","c"])
40
41
        smart_add('.')
42
        commit(Branch.open("."), "Commit one", rev_id="rev-A")
43
        #-------- end A -----------
44
45
        copy_branch(main_branch,"../branch1")
46
        os.chdir("../branch1")
47
48
        #branch1_branch = Branch.open(".")
49
        self.build_tree(["d"])
50
        smart_add(".")
51
        commit(Branch.open("."), "branch1, Commit one", rev_id="rev-E")
52
53
        #-------- end E -----------
54
55
        os.chdir("../main")
56
        self.touch("a")
57
        commit(Branch.open("."), "Commit two", rev_id="rev-B")
58
59
        #-------- end B -----------
60
61
        copy_branch(Branch.open("."),"../branch2")
62
        os.chdir("../branch2")
63
64
        branch2_branch = Branch.open(".")
65
        os.chmod("b",0770)
66
        commit(Branch.open("."), "branch2, Commit one", rev_id="rev-J")
67
68
        #-------- end J -----------
69
70
        os.chdir("../main")
71
72
        self.merge("../branch1")
73
        commit(Branch.open("."), "merge branch1, rev-11", rev_id="rev-C")
74
75
        #-------- end C -----------
76
77
        os.chdir("../branch1")
78
        tree = WorkingTree('.', Branch.open("."))
79
        tree.rename_one("d","e")
80
        commit(Branch.open("."), "branch1, commit two", rev_id="rev-F")
81
82
83
        #-------- end F -----------
84
85
        os.chdir("../branch2")
86
87
        self.touch("c")
88
        smart_add('.')
89
        commit(Branch.open("."), "branch2, commit two", rev_id="rev-K")
90
91
        #-------- end K -----------
92
93
        os.chdir("../main")
94
95
        self.touch("b")
96
        self.merge("../branch1",force=True)
97
98
        commit(Branch.open("."), "merge branch1, rev-12", rev_id="rev-D")
99
100
        # end D
101
102
        self.merge("../branch2")
103
        commit(Branch.open("."), "merge branch1, rev-22",  rev_id="rev-G")
104
105
        # end G
106
        os.chdir("../main")
107
        self.branch = Branch.open(".")
108
109
110
    def test_fileid_involved_all_revs(self):
111
112
        l = self.branch.fileid_involved( )
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
113
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["a","b","c","d"])
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
114
115
    def test_fileid_involved_one_rev(self):
116
117
        l = self.branch.fileid_involved("rev-B" )
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
118
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["a","b","c"])
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
119
120
    def test_fileid_involved_two_revs(self):
121
122
        l = self.branch.fileid_involved_between_revs("rev-B","rev-K" )
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
123
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["b","c"])
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
124
125
        l = self.branch.fileid_involved_between_revs("rev-C","rev-D" )
126
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["b","d"])
127
128
        l = self.branch.fileid_involved_between_revs("rev-C","rev-G" )
129
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["b","c","d"])
130
131
        l = self.branch.fileid_involved_between_revs("rev-E","rev-G" )
132
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["a", "b","c","d"])
133
134
135
    def test_fileid_involved_sets(self):
136
137
        l = self.branch.fileid_involved_by_set(set(["rev-B"]))
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
138
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["a"])
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
139
140
        l = self.branch.fileid_involved_by_set(set(["rev-D"]))
141
        self.assertEquals( sorted(map( lambda x: x[0], l )), ["b"])
142
143
    def test_fileid_involved_compare(self):
144
145
        l1 = self.branch.fileid_involved_between_revs("rev-E", "rev-D")
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
146
        l2 = self.branch.fileid_involved_by_set(set(["rev-D","rev-F","rev-C","rev-B"]))
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
147
        self.assertEquals( l1, l2 )
148
149
        l1 = self.branch.fileid_involved_between_revs("rev-C", "rev-G")
150
        l2 = self.branch.fileid_involved_by_set(
151
            set(["rev-G","rev-D","rev-F","rev-K","rev-J"]))
152
        self.assertEquals( l1, l2 )
153
154
    def test_fileid_involved_full_compare(self):
155
        from bzrlib.tsort import topo_sort
156
        pp=[]
1185.64.9 by Goffredo Baroncelli
renamed test_file_involved -> test_fileid_involved
157
        history = self.branch.revision_history( )
1185.64.7 by Goffredo Baroncelli
added test for function fileid_involved
158
159
        if len(history) < 2: return
160
161
        for start in range(0,len(history)-1):
162
            for end in range(start+1,len(history)):
163
164
                l1 = self.branch.fileid_involved_between_revs(
165
                    history[start], history[end])
166
167
                old_tree = self.branch.revision_tree(history[start])
168
                new_tree = self.branch.revision_tree(history[end])
169
                delta = compare_trees(old_tree, new_tree )
170
171
                l2 = [ id for path, id, kind in delta.added ] + \
172
                     [ id for oldpath, newpath, id, kind, text_modified, \
173
                            meta_modified in delta.renamed ] + \
174
                     [ id for path, id, kind, text_modified, meta_modified in \
175
                            delta.modified ]
176
177
                self.assertEquals( l1, set(l2) )
178
179
1185.64.8 by Goffredo Baroncelli
small clean-up
180
181