/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] up-to-date against bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
import tempfile
4
4
import unittest
5
5
import stat
 
6
import sys
6
7
 
7
 
from bzrlib.selftest import TestCaseInTempDir, TestCase
 
8
from bzrlib.tests import TestCaseInTempDir, TestCase
8
9
from bzrlib.branch import ScratchBranch, Branch
9
10
from bzrlib.errors import (NotBranchError, NotVersionedError,
10
11
                           WorkingTreeNotRevision, BzrCommandError)
18
19
    get_contents, ReplaceContents, ChangeExecFlag
19
20
from bzrlib.clone import copy_branch
20
21
from bzrlib.merge import merge
 
22
from bzrlib.workingtree import WorkingTree
21
23
 
22
24
 
23
25
class FalseTree(object):
467
469
        builder.apply_changeset(cset)
468
470
        self.assert_(file(builder.this.full_path("1"), "rb").read() == "text4" )
469
471
        self.assert_(file(builder.this.full_path("2"), "rb").read() == "text2" )
470
 
        self.assert_(os.stat(builder.this.full_path("1")).st_mode &0777 == 0755)
471
 
        self.assert_(os.stat(builder.this.full_path("2")).st_mode &0777 == 0655)
472
 
        self.assert_(os.stat(builder.this.full_path("3")).st_mode &0777 == 0744)
 
472
        if sys.platform != "win32":
 
473
            self.assert_(os.stat(builder.this.full_path("1")).st_mode &0777 == 0755)
 
474
            self.assert_(os.stat(builder.this.full_path("2")).st_mode &0777 == 0655)
 
475
            self.assert_(os.stat(builder.this.full_path("3")).st_mode &0777 == 0744)
473
476
        return builder
474
477
 
475
478
    def contents_test_conflicts(self, merge_factory):
482
485
        builder.cleanup()
483
486
 
484
487
    def test_symlink_conflicts(self):
485
 
        builder = MergeBuilder()
486
 
        builder.add_symlink("2", "0", "name2", "target1")
487
 
        builder.change_target("2", other="target4", base="text3")
488
 
        self.assertRaises(changeset.ThreewayContentsConflict,
489
 
                          builder.merge_changeset, ApplyMerge3)
490
 
        builder.cleanup()
 
488
        if sys.platform != "win32":
 
489
            builder = MergeBuilder()
 
490
            builder.add_symlink("2", "0", "name2", "target1")
 
491
            builder.change_target("2", other="target4", base="text3")
 
492
            self.assertRaises(changeset.ThreewayContentsConflict,
 
493
                              builder.merge_changeset, ApplyMerge3)
 
494
            builder.cleanup()
491
495
 
492
496
    def test_symlink_merge(self):
493
 
        builder = MergeBuilder()
494
 
        builder.add_symlink("1", "0", "name1", "target1")
495
 
        builder.add_symlink("2", "0", "name2", "target1")
496
 
        builder.add_symlink("3", "0", "name3", "target1")
497
 
        builder.change_target("1", this="target2")
498
 
        builder.change_target("2", base="target2")
499
 
        builder.change_target("3", other="target2")
500
 
        self.assertNotEqual(builder.cset.entries['2'].contents_change,
501
 
                            builder.cset.entries['3'].contents_change)
502
 
        cset = builder.merge_changeset(ApplyMerge3)
503
 
        builder.apply_changeset(cset)
504
 
        self.assertEqual(builder.this.get_symlink_target("1"), "target2")
505
 
        self.assertEqual(builder.this.get_symlink_target("2"), "target1")
506
 
        self.assertEqual(builder.this.get_symlink_target("3"), "target2")
507
 
        builder.cleanup()
 
497
        if sys.platform != "win32":
 
498
            builder = MergeBuilder()
 
499
            builder.add_symlink("1", "0", "name1", "target1")
 
500
            builder.add_symlink("2", "0", "name2", "target1")
 
501
            builder.add_symlink("3", "0", "name3", "target1")
 
502
            builder.change_target("1", this="target2")
 
503
            builder.change_target("2", base="target2")
 
504
            builder.change_target("3", other="target2")
 
505
            self.assertNotEqual(builder.cset.entries['2'].contents_change,
 
506
                                builder.cset.entries['3'].contents_change)
 
507
            cset = builder.merge_changeset(ApplyMerge3)
 
508
            builder.apply_changeset(cset)
 
509
            self.assertEqual(builder.this.get_symlink_target("1"), "target2")
 
510
            self.assertEqual(builder.this.get_symlink_target("2"), "target1")
 
511
            self.assertEqual(builder.this.get_symlink_target("3"), "target2")
 
512
            builder.cleanup()
508
513
 
509
514
    def test_perms_merge(self):
510
515
        builder = MergeBuilder()
520
525
        self.assert_(isinstance(cset.entries["2"].metadata_change, ExecFlagMerge))
521
526
        self.assert_(cset.entries["3"].is_boring())
522
527
        builder.apply_changeset(cset)
523
 
        self.assert_(os.lstat(builder.this.full_path("1")).st_mode &0100 == 0000)
524
 
        self.assert_(os.lstat(builder.this.full_path("2")).st_mode &0100 == 0100)
525
 
        self.assert_(os.lstat(builder.this.full_path("3")).st_mode &0100 == 0000)
 
528
        if sys.platform != "win32":
 
529
            self.assert_(os.lstat(builder.this.full_path("1")).st_mode &0100 == 0000)
 
530
            self.assert_(os.lstat(builder.this.full_path("2")).st_mode &0100 == 0100)
 
531
            self.assert_(os.lstat(builder.this.full_path("3")).st_mode &0100 == 0000)
526
532
        builder.cleanup();
527
533
 
528
534
 
530
536
 
531
537
    def test_trivial_star_merge(self):
532
538
        """Test that merges in a star shape Just Work.""" 
533
 
        from bzrlib.add import smart_add_branch, add_reporter_null
 
539
        from bzrlib.add import smart_add_tree, add_reporter_null
534
540
        from bzrlib.clone import copy_branch
535
541
        from bzrlib.merge import merge
536
542
        # John starts a branch
537
543
        self.build_tree(("original/", "original/file1", "original/file2"))
538
544
        branch = Branch.initialize("original")
539
 
        smart_add_branch(branch, ["original"], True, add_reporter_null)
540
 
        branch.working_tree().commit("start branch.", verbose=False)
 
545
        tree = WorkingTree('original', branch)
 
546
        smart_add_tree(tree, ["original"], True, add_reporter_null)
 
547
        tree.commit("start branch.", verbose=False)
541
548
        # Mary branches it.
542
549
        self.build_tree(("mary/",))
543
550
        copy_branch(branch, "mary")
568
575
        os.mkdir('a')
569
576
        a = Branch.initialize('a')
570
577
        file('a/file', 'wb').write('contents\n')
571
 
        a.add('file')
 
578
        a.working_tree().add('file')
572
579
        a.working_tree().commit('base revision', allow_pointless=False)
573
580
        b = copy_branch(a, 'b')
574
581
        file('a/file', 'wb').write('other contents\n')
598
605
        os.mkdir('a')
599
606
        a = Branch.initialize('a')
600
607
        file('a/a_file', 'wb').write('contents\n')
601
 
        a.add('a_file')
 
608
        a.working_tree().add('a_file')
602
609
        a.working_tree().commit('a_revision', allow_pointless=False)
603
610
        os.mkdir('b')
604
611
        b = Branch.initialize('b')
605
612
        file('b/b_file', 'wb').write('contents\n')
606
 
        b.add('b_file')
 
613
        b.working_tree().add('b_file')
607
614
        b.working_tree().commit('b_revision', allow_pointless=False)
608
615
        merge(['b', -1], ['b', 0], this_dir='a')
609
616
        self.assert_(os.path.lexists('a/b_file'))
615
622
        os.mkdir('a')
616
623
        a = Branch.initialize('a')
617
624
        file('a/file', 'wb').write('contents\n')
618
 
        a.add('file')
 
625
        a.working_tree().add('file')
619
626
        a.working_tree().commit('a_revision', allow_pointless=False)
620
627
        os.mkdir('b')
621
628
        b = Branch.initialize('b')
622
629
        file('b/file', 'wb').write('contents\n')
623
 
        b.add('file')
 
630
        b.working_tree().add('file')
624
631
        b.working_tree().commit('b_revision', allow_pointless=False)
625
632
        merge(['b', -1], ['b', 0], this_dir='a')
626
633
        self.assert_(os.path.lexists('a/file'))
631
638
        os.mkdir('a')
632
639
        a = Branch.initialize('a')
633
640
        file('a/file', 'wb').write('contents\n')
634
 
        a.add('file')
 
641
        a.working_tree().add('file')
635
642
        a.working_tree().commit('a_revision', allow_pointless=False)
636
643
        del a
637
644
        self.run_bzr('branch', 'a', 'b')
649
656
        os.mkdir('a')
650
657
        a = Branch.initialize('a')
651
658
        file('a/file', 'wb').write('contents\n')
652
 
        a.add('file')
653
659
        a_wt = a.working_tree()
 
660
        a_wt.add('file')
654
661
        a_wt.commit('r0')
655
662
        copy_branch(a, 'b')
656
663
        b = Branch.open('b')