~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_bundle.py

merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2004-2006 by 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
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
 
 
7
#
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
12
 
 
 
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
19
import sys
20
20
import tempfile
21
21
 
 
22
from bzrlib import inventory
22
23
from bzrlib.builtins import merge
23
24
from bzrlib.bzrdir import BzrDir
24
25
from bzrlib.bundle.apply_bundle import install_bundle, merge_bundle
26
27
from bzrlib.bundle.serializer import write_bundle, read_bundle
27
28
from bzrlib.branch import Branch
28
29
from bzrlib.diff import internal_diff
29
 
from bzrlib.delta import compare_trees
30
30
from bzrlib.errors import BzrError, TestamentMismatch, NotABundle, BadBundle
31
31
from bzrlib.merge import Merge3Merger
32
32
from bzrlib.osutils import has_symlinks, sha_file
290
290
    def test_iteration(self):
291
291
        """Ensure that iteration through ids works properly"""
292
292
        btree = self.make_tree_1()[0]
293
 
        self.assertEqual(self.sorted_ids(btree), ['a', 'b', 'c', 'd'])
 
293
        self.assertEqual(self.sorted_ids(btree),
 
294
            [inventory.ROOT_ID, 'a', 'b', 'c', 'd'])
294
295
        btree.note_deletion("grandparent/parent/file")
295
296
        btree.note_id("e", "grandparent/alt_parent/fool", kind="directory")
296
297
        btree.note_last_changed("grandparent/alt_parent/fool", 
297
298
                                "revisionidiguess")
298
 
        self.assertEqual(self.sorted_ids(btree), ['a', 'b', 'd', 'e'])
 
299
        self.assertEqual(self.sorted_ids(btree),
 
300
            [inventory.ROOT_ID, 'a', 'b', 'd', 'e'])
299
301
 
300
302
 
301
303
class BundleTester(TestCaseWithTransport):
372
374
 
373
375
    def test_crlf_bundle(self):
374
376
        try:
375
 
            read_bundle(StringIO('# Bazaar revision bundle v0.7\r\n'))
 
377
            read_bundle(StringIO('# Bazaar revision bundle v0.8\r\n'))
376
378
        except BadBundle:
377
379
            # It is currently permitted for bundles with crlf line endings to
378
380
            # make read_bundle raise a BadBundle, but this should be fixed.
400
402
            new = tree.branch.repository.revision_tree(ancestor)
401
403
 
402
404
            # Check that there aren't any inventory level changes
403
 
            delta = compare_trees(old, new)
 
405
            delta = new.changes_from(old)
404
406
            self.assertFalse(delta.has_changed(),
405
407
                             'Revision %s not copied correctly.'
406
408
                             % (ancestor,))
419
421
            rh = self.b1.revision_history()
420
422
            tree.branch.set_revision_history(rh[:rh.index(rev_id)+1])
421
423
            tree.update()
422
 
            delta = compare_trees(self.b1.repository.revision_tree(rev_id),
423
 
                                  tree)
 
424
            delta = tree.changes_from(self.b1.repository.revision_tree(rev_id))
424
425
            self.assertFalse(delta.has_changed(),
425
426
                             'Working tree has modifications')
426
427
        return tree
809
810
        wt.commit('add one', rev_id='a@cset-0-1')
810
811
        self.build_tree(['b1/two'])
811
812
        wt.add('two')
812
 
        wt.commit('add two', rev_id='a@cset-0-2')
 
813
        wt.commit('add two', rev_id='a@cset-0-2',
 
814
                  revprops={'branch-nick':'test'})
813
815
 
814
816
        bundle_txt = StringIO()
815
817
        rev_ids = write_bundle(wt.branch.repository, 'a@cset-0-2',
820
822
 
821
823
    def check_valid(self, bundle):
822
824
        """Check that after whatever munging, the final object is valid."""
823
 
        self.assertEqual(['a@cset-0-2'], 
 
825
        self.assertEqual(['a@cset-0-2'],
824
826
            [r.revision_id for r in bundle.real_revisions])
825
827
 
826
828
    def test_extra_whitespace(self):
859
861
        # creates a blank line at the end, and fails if that
860
862
        # line is stripped
861
863
        self.assertEqual('\n\n', raw[-2:])
862
 
        bundle_text = StringIO(raw[:-1])
863
 
 
864
 
        bundle = read_bundle(bundle_txt)
865
 
        self.check_valid(bundle)
 
864
        bundle_txt = StringIO(raw[:-1])
 
865
 
 
866
        bundle = read_bundle(bundle_txt)
 
867
        self.check_valid(bundle)
 
868
 
 
869
    def test_opening_text(self):
 
870
        bundle_txt = self.build_test_bundle()
 
871
 
 
872
        bundle_txt = StringIO("Some random\nemail comments\n"
 
873
                              + bundle_txt.getvalue())
 
874
 
 
875
        bundle = read_bundle(bundle_txt)
 
876
        self.check_valid(bundle)
 
877
 
 
878
    def test_trailing_text(self):
 
879
        bundle_txt = self.build_test_bundle()
 
880
 
 
881
        bundle_txt = StringIO(bundle_txt.getvalue() +
 
882
                              "Some trailing\nrandom\ntext\n")
 
883
 
 
884
        bundle = read_bundle(bundle_txt)
 
885
        self.check_valid(bundle)
 
886