~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_merge3.py

  • Committer: John Arbash Meinel
  • Date: 2006-01-23 22:33:23 UTC
  • mto: This revision was merged to the branch mainline in revision 1551.
  • Revision ID: john@arbash-meinel.com-20060123223323-16eb865383bf650a
From Jari Alto: Makefile fixes (clean target error suppression)

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
 
from bzrlib.selftest import InTempDir, TestCase
 
18
from bzrlib.tests import TestCaseInTempDir, TestCase
19
19
from bzrlib.merge3 import Merge3
 
20
from bzrlib.errors import CantReprocessAndShowBase
20
21
 
21
22
def split_lines(t):
22
23
    from cStringIO import StringIO
82
83
     The two are the same,
83
84
     But after they are produced,
84
85
       they have different names.
85
 
<<<<<<<< LAO
86
 
========
 
86
<<<<<<< LAO
 
87
=======
87
88
     
88
89
       -- The Way of Lao-Tzu, tr. Wing-tsit Chan
89
90
 
90
 
>>>>>>>> TAO
 
91
>>>>>>> TAO
91
92
""")
92
93
 
93
94
class TestMerge3(TestCase):
221
222
                            start_marker='<<',
222
223
                            mid_marker='--',
223
224
                            end_marker='>>')
224
 
        self.assertEquals(''.join(m3.merge_lines()),
225
 
                          'aaa\n222\nbbb\n')
 
225
        self.assertEquals(''.join(ml), 'aaa\n222\nbbb\n')
 
226
        
226
227
 
227
228
    def test_insert_clash(self):
228
229
        """Both try to insert lines in the same place."""
300
301
        self.log('merge result:')
301
302
        self.log(''.join(ml))
302
303
        self.assertEquals(ml, MERGED_RESULT)
 
304
 
 
305
    def test_minimal_conflicts(self):
 
306
        """Reprocessing"""
 
307
        base_text = ("a\n" * 20).splitlines(True)
 
308
        this_text = ("a\n"*10+"b\n" * 10).splitlines(True)
 
309
        other_text = ("a\n"*10+"c\n"+"b\n" * 8 + "c\n").splitlines(True)
 
310
        m3 = Merge3(base_text, other_text, this_text)
 
311
        m_lines = m3.merge_lines('OTHER', 'THIS', reprocess=True)
 
312
        merged_text = "".join(list(m_lines))
 
313
        optimal_text = "a\n" * 10 + "<<<<<<< OTHER\nc\n=======\n>>>>>>> THIS"\
 
314
            + "\n" + 8* "b\n" + "<<<<<<< OTHER\nc\n=======\nb\nb\n>>>>>>>"\
 
315
            + " THIS\n"
 
316
        self.assertEqualDiff(merged_text, optimal_text)
 
317
 
 
318
    def test_reprocess_and_base(self):
 
319
        """Reprocessing and showing base breaks correctly"""
 
320
        base_text = ("a\n" * 20).splitlines(True)
 
321
        this_text = ("a\n"*10+"b\n" * 10).splitlines(True)
 
322
        other_text = ("a\n"*10+"c\n"+"b\n" * 8 + "c\n").splitlines(True)
 
323
        m3 = Merge3(base_text, other_text, this_text)
 
324
        m_lines = m3.merge_lines('OTHER', 'THIS', reprocess=True, 
 
325
                                 base_marker='|||||||')
 
326
        self.assertRaises(CantReprocessAndShowBase, list, m_lines)