467
468
builder.apply_changeset(cset)
468
469
self.assert_(file(builder.this.full_path("1"), "rb").read() == "text4" )
469
470
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)
471
if sys.platform != "win32":
472
self.assert_(os.stat(builder.this.full_path("1")).st_mode &0777 == 0755)
473
self.assert_(os.stat(builder.this.full_path("2")).st_mode &0777 == 0655)
474
self.assert_(os.stat(builder.this.full_path("3")).st_mode &0777 == 0744)
475
477
def contents_test_conflicts(self, merge_factory):
482
484
builder.cleanup()
484
486
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)
487
if sys.platform != "win32":
488
builder = MergeBuilder()
489
builder.add_symlink("2", "0", "name2", "target1")
490
builder.change_target("2", other="target4", base="text3")
491
self.assertRaises(changeset.ThreewayContentsConflict,
492
builder.merge_changeset, ApplyMerge3)
492
495
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")
496
if sys.platform != "win32":
497
builder = MergeBuilder()
498
builder.add_symlink("1", "0", "name1", "target1")
499
builder.add_symlink("2", "0", "name2", "target1")
500
builder.add_symlink("3", "0", "name3", "target1")
501
builder.change_target("1", this="target2")
502
builder.change_target("2", base="target2")
503
builder.change_target("3", other="target2")
504
self.assertNotEqual(builder.cset.entries['2'].contents_change,
505
builder.cset.entries['3'].contents_change)
506
cset = builder.merge_changeset(ApplyMerge3)
507
builder.apply_changeset(cset)
508
self.assertEqual(builder.this.get_symlink_target("1"), "target2")
509
self.assertEqual(builder.this.get_symlink_target("2"), "target1")
510
self.assertEqual(builder.this.get_symlink_target("3"), "target2")
509
513
def test_perms_merge(self):
510
514
builder = MergeBuilder()
520
524
self.assert_(isinstance(cset.entries["2"].metadata_change, ExecFlagMerge))
521
525
self.assert_(cset.entries["3"].is_boring())
522
526
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)
527
if sys.platform != "win32":
528
self.assert_(os.lstat(builder.this.full_path("1")).st_mode &0100 == 0000)
529
self.assert_(os.lstat(builder.this.full_path("2")).st_mode &0100 == 0100)
530
self.assert_(os.lstat(builder.this.full_path("3")).st_mode &0100 == 0000)
526
531
builder.cleanup();