/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/test_merge_core.py

[merge] win32

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import os
2
2
import shutil
3
 
import tempfile
4
 
import unittest
5
3
import stat
6
4
import sys
7
5
 
11
9
                           WorkingTreeNotRevision, BzrCommandError)
12
10
from bzrlib.inventory import RootEntry
13
11
import bzrlib.inventory as inventory
14
 
from bzrlib.osutils import file_kind, rename, sha_file
 
12
from bzrlib.osutils import file_kind, rename, sha_file, pathjoin, mkdtemp
15
13
from bzrlib import changeset
16
14
from bzrlib.merge_core import (ApplyMerge3, make_merge_changeset,
17
15
                               BackupBeforeChange, ExecFlagMerge, WeaveMerge)
64
62
        self.inventory = FalseTree(self)
65
63
    
66
64
    def child_path(self, parent, name):
67
 
        return os.path.join(self.inventory_dict[parent], name)
 
65
        return pathjoin(self.inventory_dict[parent], name)
68
66
 
69
67
    def add_file(self, id, parent, name, contents, mode):
70
68
        path = self.child_path(parent, name)
94
92
        self.inventory_dict[id] = path
95
93
 
96
94
    def abs_path(self, path):
97
 
        return os.path.join(self.dir, path)
 
95
        return pathjoin(self.dir, path)
98
96
 
99
97
    def full_path(self, id):
100
98
        try:
123
121
        return self.full_path(id)
124
122
 
125
123
    def change_path(self, id, path):
126
 
        old_path = os.path.join(self.dir, self.inventory_dict[id])
 
124
        old_path = pathjoin(self.dir, self.inventory_dict[id])
127
125
        rename(old_path, self.abs_path(path))
128
126
        self.inventory_dict[id] = path
129
127
 
142
140
 
143
141
class MergeBuilder(object):
144
142
    def __init__(self):
145
 
        self.dir = tempfile.mkdtemp(prefix="BaZing")
146
 
        self.base = MergeTree(os.path.join(self.dir, "base"))
147
 
        self.this = MergeTree(os.path.join(self.dir, "this"))
148
 
        self.other = MergeTree(os.path.join(self.dir, "other"))
 
143
        self.dir = mkdtemp(prefix="BaZing")
 
144
        self.base = MergeTree(pathjoin(self.dir, "base"))
 
145
        self.this = MergeTree(pathjoin(self.dir, "this"))
 
146
        self.other = MergeTree(pathjoin(self.dir, "other"))
149
147
        
150
148
        self.cset = changeset.Changeset()
151
149
        self.cset.add_entry(changeset.ChangesetEntry("0", 
154
152
        if name is None:
155
153
            assert (parent is None)
156
154
            return None
157
 
        return os.path.join(self.cset.entries[parent].path, name)
 
155
        return pathjoin(self.cset.entries[parent].path, name)
158
156
 
159
157
    def add_file(self, id, parent, name, contents, mode):
160
158
        self.base.add_file(id, parent, name, contents, mode)
328
326
                if parent is None:
329
327
                    return orig_inventory[file_id]
330
328
                dirname = new_path(parent)
331
 
                return os.path.join(dirname, orig_inventory[file_id])
 
329
                return pathjoin(dirname, orig_inventory[file_id])
332
330
 
333
331
        new_inventory = {}
334
332
        for file_id in orig_inventory.iterkeys():
355
353
        shutil.rmtree(self.dir)
356
354
 
357
355
 
358
 
class MergeTest(unittest.TestCase):
 
356
class MergeTest(TestCase):
359
357
    def test_change_name(self):
360
358
        """Test renames"""
361
359
        builder = MergeBuilder()
366
364
        builder.add_file("3", "0", "name5", "hello3", 0755)
367
365
        builder.change_name("3", this="name6")
368
366
        cset = builder.merge_changeset(ApplyMerge3)
369
 
        self.assert_(cset.entries["2"].is_boring())
370
 
        self.assert_(cset.entries["1"].name == "name1")
371
 
        self.assert_(cset.entries["1"].new_name == "name2")
372
 
        self.assert_(cset.entries["3"].is_boring())
 
367
        self.failUnless(cset.entries["2"].is_boring())
 
368
        self.assertEqual(cset.entries["1"].name, "name1")
 
369
        self.assertEqual(cset.entries["1"].new_name, "name2")
 
370
        self.failUnless(cset.entries["3"].is_boring())
373
371
        for tree in (builder.this, builder.other, builder.base):
374
 
            self.assert_(tree.dir != builder.dir and 
375
 
                   tree.dir.startswith(builder.dir))
 
372
            self.assertNotEqual(tree.dir, builder.dir)
 
373
            self.assertStartsWith(tree.dir, builder.dir)
376
374
            for path in tree.inventory_dict.itervalues():
377
375
                fullpath = tree.abs_path(path)
378
 
                self.assert_(fullpath.startswith(tree.dir))
379
 
                self.assert_(not path.startswith(tree.dir))
380
 
                self.assert_(os.path.exists(fullpath))
 
376
                self.assertStartsWith(fullpath, tree.dir)
 
377
                self.failIf(path.startswith(tree.dir))
 
378
                self.failUnless(os.path.lexists(fullpath))
381
379
        builder.apply_changeset(cset)
382
380
        builder.cleanup()
383
381
        builder = MergeBuilder()
536
534
 
537
535
    def test_trivial_star_merge(self):
538
536
        """Test that merges in a star shape Just Work.""" 
539
 
        from bzrlib.add import smart_add_tree, add_reporter_null
 
537
        from bzrlib.add import smart_add_tree
540
538
        from bzrlib.clone import copy_branch
541
539
        from bzrlib.merge import merge
542
540
        # John starts a branch
543
541
        self.build_tree(("original/", "original/file1", "original/file2"))
544
542
        branch = Branch.initialize("original")
545
543
        tree = WorkingTree('original', branch)
546
 
        smart_add_tree(tree, ["original"], True, add_reporter_null)
 
544
        smart_add_tree(tree, ["original"])
547
545
        tree.commit("start branch.", verbose=False)
548
546
        # Mary branches it.
549
547
        self.build_tree(("mary/",))