~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_workingtree/test_content_filters.py

  • Committer: Ian Clatworthy
  • Date: 2009-10-28 06:34:23 UTC
  • mto: (4634.103.1 385879)
  • mto: This revision was merged to the branch mainline in revision 4857.
  • Revision ID: ian.clatworthy@canonical.com-20091028063423-sh06yjzl5f1tna2h
more test improvements

Show diffs side-by-side

added added

removed removed

Lines of Context:
101
101
            ])
102
102
        tree.add(['file1.txt', 'file2.bin', 'file3.txt'])
103
103
        tree.commit('commit raw content')
104
 
        # Commit another revision with various changes
 
104
        fileid_1 = tree.path2id('file1.txt')
 
105
        fileid_2 = tree.path2id('file2.bin')
 
106
        fileid_3 = tree.path2id('file3.txt')
 
107
        # Commit another revision with various changes. We make sure
 
108
        # the change includes a modification, an addition, a deletion and
 
109
        # a rename from a path without content filtering to one with it.
105
110
        self.build_tree_contents([
106
111
            (dir + '/file1.txt', 'Foo ROCKS!'),
107
 
            (dir + '/file2.txt', 'Hello World'),
 
112
            (dir + '/file4.txt', 'Hello World'),
108
113
            ])
109
 
        tree.add(['file2.txt'])
 
114
        tree.add(['file4.txt'])
110
115
        tree.remove(['file3.txt'], keep_files=False)
111
116
        tree.rename_one('file2.bin', 'file3.txt')
112
117
        tree.commit("change, add and rename stuff")
113
 
        txt1_fileid = tree.path2id('file1.txt')
114
 
        txt2_fileid = tree.path2id('file2.txt')
115
 
        txt3_fileid = tree.path2id('file3.txt')
116
 
        return tree, txt1_fileid, txt2_fileid, txt3_fileid
 
118
        fileid_4 = tree.path2id('file4.txt')
 
119
        return tree, fileid_1, fileid_2, fileid_3, fileid_4
117
120
 
118
121
    def patch_in_content_filter(self):
119
122
        # Patch in a custom, symmetric content filter stack
252
255
 
253
256
    def test_content_filtering_applied_on_pull(self):
254
257
        # Create a source branch with two revisions
255
 
        source, txt_fileid, txt2_fileid, txt3_fileid = \
 
258
        source, fileid_1, fileid_2, fileid_3, fileid_4 = \
256
259
            self.create_cf_tree_with_two_revisions(txt_reader=None,
257
260
            txt_writer=None, dir='source')
258
261
        if not source.supports_content_filtering():
259
262
            return
260
263
        self.assertFileEqual("Foo ROCKS!", 'source/file1.txt')
261
 
        self.assert_basis_content("Foo ROCKS!", source, txt_fileid)
 
264
        self.assert_basis_content("Foo ROCKS!", source, fileid_1)
262
265
 
263
266
        # Now patch in content filtering and branch from revision 1
264
267
        self.patch_in_content_filter()
265
268
        self.run_bzr('branch -r1 source target')
266
269
        target = WorkingTree.open('target')
267
270
        self.assertFileEqual("fOO tXT", 'target/file1.txt')
268
 
        self.assert_basis_content("Foo Txt", target, txt_fileid)
 
271
        self.assert_basis_content("Foo Txt", target, fileid_1)
 
272
        self.assertFileEqual("bAR tXT", 'target/file3.txt')
 
273
        self.assert_basis_content("Bar Txt", target, fileid_3)
269
274
 
270
275
        # Pull the latter change and check the target tree is updated
271
276
        self.run_bzr('pull -d target')
 
277
        self.assert_basis_content("Foo ROCKS!", target, fileid_1)
272
278
        self.assertFileEqual("fOO rocks!", 'target/file1.txt')
273
 
        self.assert_basis_content("Foo ROCKS!", target, txt_fileid)
274
 
        self.assertFileEqual("hELLO wORLD", 'target/file2.txt')
275
 
        self.assert_basis_content("Hello World", target, txt2_fileid)
 
279
        self.assert_basis_content("Hello World", target, fileid_4)
 
280
        self.assertFileEqual("hELLO wORLD", 'target/file4.txt')
 
281
        self.assert_basis_content("Foo Bin", target, fileid_2)
 
282
        #self.assertFileEqual("fOO bIN", 'target/file3.txt')
276
283
 
277
284
    def test_content_filtering_applied_on_merge(self):
278
285
        # Create a source branch with two revisions
279
 
        source, txt_fileid, txt2_fileid, txt3_fileid = \
 
286
        source, fileid_1, fileid_2, fileid_3, fileid_4 = \
280
287
            self.create_cf_tree_with_two_revisions(txt_reader=None,
281
288
            txt_writer=None, dir='source')
282
289
        if not source.supports_content_filtering():
283
290
            return
 
291
        self.assert_basis_content("Foo ROCKS!", source, fileid_1)
284
292
        self.assertFileEqual("Foo ROCKS!", 'source/file1.txt')
285
 
        self.assert_basis_content("Foo ROCKS!", source, txt_fileid)
286
293
 
287
294
        # Now patch in content filtering and branch from revision 1
288
295
        self.patch_in_content_filter()
289
296
        self.run_bzr('branch -r1 source target')
290
297
        target = WorkingTree.open('target')
 
298
        self.assert_basis_content("Foo Txt", target, fileid_1)
291
299
        self.assertFileEqual("fOO tXT", 'target/file1.txt')
292
 
        self.assert_basis_content("Foo Txt", target, txt_fileid)
 
300
        self.assertFileEqual("Foo Bin", 'target/file2.bin')
 
301
        self.assertFileEqual("bAR tXT", 'target/file3.txt')
293
302
 
294
303
        # Merge the latter change and check the target tree is updated
295
304
        self.run_bzr('merge -d target source')
296
305
        self.assertFileEqual("fOO rocks!", 'target/file1.txt')
297
 
        self.assertFileEqual("hELLO wORLD", 'target/file2.txt')
 
306
        #self.assertFileEqual("fOO bIN", 'target/file3.txt')
 
307
        self.assertFileEqual("hELLO wORLD", 'target/file4.txt')
298
308
 
299
309
        # Commit the merge and check the right content is stored
300
310
        target.commit("merge file1.txt changes from source")
301
 
        self.assert_basis_content("Foo ROCKS!", target, txt_fileid)
302
 
        self.assert_basis_content("Hello World", target, txt2_fileid)
 
311
        self.assert_basis_content("Foo ROCKS!", target, fileid_1)
 
312
        self.assert_basis_content("Foo Bin", target, fileid_2)
 
313
        self.assert_basis_content("Hello World", target, fileid_4)
303
314
 
304
315
    def test_content_filtering_applied_on_switch(self):
305
316
        # Create a source branch with two revisions
306
 
        source, txt_fileid, txt2_fileid, txt3_fileid = \
 
317
        source, fileid_1, fileid_2, fileid_3, fileid_4 = \
307
318
            self.create_cf_tree_with_two_revisions(txt_reader=None,
308
319
            txt_writer=None, dir='branch-a')
309
320
        if not source.supports_content_filtering():
321
332
        checkout_control_dir = BzrDir.open_containing('checkout')[0]
322
333
        switch(checkout_control_dir, source.branch)
323
334
        self.assertFileEqual("fOO rocks!", 'checkout/file1.txt')
324
 
        self.assertFileEqual("hELLO wORLD", 'checkout/file2.txt')
 
335
        self.assertFileEqual("hELLO wORLD", 'checkout/file4.txt')
325
336
 
326
337
    def test_content_filtering_applied_on_revert(self):
327
338
        # Create a source branch with content filtering