~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_transform.py

Add a NEWS entry and prepare submission.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006, 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
17
17
import os
18
18
from StringIO import StringIO
19
19
import sys
20
 
import time
21
20
 
22
21
from bzrlib import (
23
22
    bencode,
137
136
        transform.finalize()
138
137
        transform.finalize()
139
138
 
140
 
    def test_create_files_same_timestamp(self):
141
 
        transform, root = self.get_transform()
142
 
        self.wt.lock_tree_write()
143
 
        self.addCleanup(self.wt.unlock)
144
 
        # Roll back the clock, so that we know everything is being set to the
145
 
        # exact time
146
 
        transform._creation_mtime = creation_mtime = time.time() - 20.0
147
 
        transform.create_file('content-one',
148
 
                              transform.create_path('one', root))
149
 
        time.sleep(1) # *ugly*
150
 
        transform.create_file('content-two',
151
 
                              transform.create_path('two', root))
152
 
        transform.apply()
153
 
        fo, st1 = self.wt.get_file_with_stat(None, path='one', filtered=False)
154
 
        fo.close()
155
 
        fo, st2 = self.wt.get_file_with_stat(None, path='two', filtered=False)
156
 
        fo.close()
157
 
        # We only guarantee 2s resolution
158
 
        self.assertTrue(abs(creation_mtime - st1.st_mtime) < 2.0,
159
 
            "%s != %s within 2 seconds" % (creation_mtime, st1.st_mtime))
160
 
        # But if we have more than that, all files should get the same result
161
 
        self.assertEqual(st1.st_mtime, st2.st_mtime)
162
 
 
163
 
    def test_change_root_id(self):
164
 
        transform, root = self.get_transform()
165
 
        self.assertNotEqual('new-root-id', self.wt.get_root_id())
166
 
        transform.new_directory('', ROOT_PARENT, 'new-root-id')
167
 
        transform.delete_contents(root)
168
 
        transform.unversion_file(root)
169
 
        transform.fixup_new_roots()
170
 
        transform.apply()
171
 
        self.assertEqual('new-root-id', self.wt.get_root_id())
172
 
 
173
 
    def test_change_root_id_add_files(self):
174
 
        transform, root = self.get_transform()
175
 
        self.assertNotEqual('new-root-id', self.wt.get_root_id())
176
 
        new_trans_id = transform.new_directory('', ROOT_PARENT, 'new-root-id')
177
 
        transform.new_file('file', new_trans_id, ['new-contents\n'],
178
 
                           'new-file-id')
179
 
        transform.delete_contents(root)
180
 
        transform.unversion_file(root)
181
 
        transform.fixup_new_roots()
182
 
        transform.apply()
183
 
        self.assertEqual('new-root-id', self.wt.get_root_id())
184
 
        self.assertEqual('new-file-id', self.wt.path2id('file'))
185
 
        self.assertFileEqual('new-contents\n', self.wt.abspath('file'))
186
 
 
187
 
    def test_add_two_roots(self):
188
 
        transform, root = self.get_transform()
189
 
        new_trans_id = transform.new_directory('', ROOT_PARENT, 'new-root-id')
190
 
        new_trans_id = transform.new_directory('', ROOT_PARENT, 'alt-root-id')
191
 
        self.assertRaises(ValueError, transform.fixup_new_roots)
192
 
 
193
139
    def test_hardlink(self):
194
140
        self.requireFeature(HardlinkFeature)
195
141
        transform, root = self.get_transform()
735
681
                                         ' versioned, but has versioned'
736
682
                                         ' children.  Versioned directory.')
737
683
        self.assertEqual(conflicts_s[6], 'Conflict moving oz/emeraldcity into'
738
 
                                         ' oz/emeraldcity. Cancelled move.')
 
684
                                         ' oz/emeraldcity.  Cancelled move.')
739
685
 
740
686
    def prepare_wrong_parent_kind(self):
741
687
        tt, root = self.get_transform()
812
758
        create.apply()
813
759
        transform, root = self.get_transform()
814
760
        transform.adjust_root_path('oldroot', fun)
815
 
        new_root = transform.trans_id_tree_path('')
 
761
        new_root=transform.trans_id_tree_path('')
816
762
        transform.version_file('new-root', new_root)
817
763
        transform.apply()
818
764
 
1923
1869
        self.assertTrue(source.is_executable('file1-id'))
1924
1870
 
1925
1871
    def install_rot13_content_filter(self, pattern):
1926
 
        # We could use
1927
 
        # self.addCleanup(filters._reset_registry, filters._reset_registry())
1928
 
        # below, but that looks a bit... hard to read even if it's exactly
1929
 
        # the same thing.
1930
1872
        original_registry = filters._reset_registry()
1931
1873
        def restore_registry():
1932
1874
            filters._reset_registry(original_registry)
2371
2313
    def test_ignore_pb(self):
2372
2314
        # pb could be supported, but TT.iter_changes doesn't support it.
2373
2315
        revision_tree, preview_tree = self.get_tree_and_preview_tree()
2374
 
        preview_tree.iter_changes(revision_tree)
 
2316
        preview_tree.iter_changes(revision_tree, pb=progress.DummyProgress())
2375
2317
 
2376
2318
    def test_kind(self):
2377
2319
        revision_tree = self.create_tree()
2739
2681
        preview = self.get_empty_preview()
2740
2682
        root = preview.new_directory('', ROOT_PARENT, 'tree-root')
2741
2683
        # FIXME: new_directory should mark root.
2742
 
        preview.fixup_new_roots()
 
2684
        preview.adjust_path('', ROOT_PARENT, root)
2743
2685
        preview_tree = preview.get_preview_tree()
2744
2686
        file_trans_id = preview.new_file('a', preview.root, 'contents',
2745
2687
                                         'a-id')
2779
2721
        file_trans_id = preview.trans_id_file_id('file-id')
2780
2722
        preview.delete_contents(file_trans_id)
2781
2723
        preview.create_file('a\nb\n', file_trans_id)
 
2724
        pb = progress.DummyProgress()
2782
2725
        preview_tree = preview.get_preview_tree()
2783
 
        merger = Merger.from_revision_ids(None, preview_tree,
 
2726
        merger = Merger.from_revision_ids(pb, preview_tree,
2784
2727
                                          child_tree.branch.last_revision(),
2785
2728
                                          other_branch=child_tree.branch,
2786
2729
                                          tree_branch=work_tree.branch)
2798
2741
        tt.new_file('name', tt.root, 'content', 'file-id')
2799
2742
        tree2 = self.make_branch_and_tree('tree2')
2800
2743
        tree2.set_root_id('TREE_ROOT')
 
2744
        pb = progress.DummyProgress()
2801
2745
        merger = Merger.from_uncommitted(tree2, tt.get_preview_tree(),
2802
 
                                         None, tree.basis_tree())
 
2746
                                         pb, tree.basis_tree())
2803
2747
        merger.merge_type = Merge3Merger
2804
2748
        merger.do_merge()
2805
2749
 
2815
2759
        tt.create_file('baz', trans_id)
2816
2760
        tree2 = tree.bzrdir.sprout('tree2').open_workingtree()
2817
2761
        self.build_tree_contents([('tree2/foo', 'qux')])
2818
 
        pb = None
 
2762
        pb = progress.DummyProgress()
2819
2763
        merger = Merger.from_uncommitted(tree2, tt.get_preview_tree(),
2820
2764
                                         pb, tree.basis_tree())
2821
2765
        merger.merge_type = Merge3Merger