tests/test-simplemerge.py
changeset 6002 abd66eb0889e
parent 4633 ff7253a0d1da
child 6212 e75aab656f46
equal deleted inserted replaced
6001:30d2fecaab76 6002:abd66eb0889e
    17 import os
    17 import os
    18 import unittest
    18 import unittest
    19 from unittest import TestCase
    19 from unittest import TestCase
    20 import imp
    20 import imp
    21 import shutil
    21 import shutil
    22 from mercurial import util
    22 from mercurial import util, simplemerge
    23 
    23 
    24 # copy simplemerge to the cwd to avoid creating a .pyc file in the source tree
    24 # bzr compatible interface, for the tests
    25 shutil.copyfile(os.path.join(os.environ['TESTDIR'], os.path.pardir,
    25 class Merge3(simplemerge.Merge3Text):
    26                              'contrib', 'simplemerge'),
    26     """3-way merge of texts.
    27                 'simplemerge.py')
    27 
    28 simplemerge = imp.load_source('simplemerge', 'simplemerge.py')
    28     Given BASE, OTHER, THIS, tries to produce a combined text
    29 Merge3 = simplemerge.Merge3
    29     incorporating the changes from both BASE->OTHER and BASE->THIS.
       
    30     All three will typically be sequences of lines."""
       
    31     def __init__(self, base, a, b):
       
    32         basetext = '\n'.join([i.strip('\n') for i in base] + [''])
       
    33         atext = '\n'.join([i.strip('\n') for i in a] + [''])
       
    34         btext = '\n'.join([i.strip('\n') for i in b] + [''])
       
    35         if util.binary(basetext) or util.binary(atext) or util.binary(btext):
       
    36             raise util.Abort("don't know how to merge binary files")
       
    37         simplemerge.Merge3Text.__init__(self, basetext, atext, btext,
       
    38                                         base, a, b)
       
    39 
    30 CantReprocessAndShowBase = simplemerge.CantReprocessAndShowBase
    40 CantReprocessAndShowBase = simplemerge.CantReprocessAndShowBase
    31 
    41 
    32 def split_lines(t):
    42 def split_lines(t):
    33     from cStringIO import StringIO
    43     from cStringIO import StringIO
    34     return StringIO(t).readlines()
    44     return StringIO(t).readlines()