tests/test-simplemerge-cmd.out
author Renato Cunha <renatoc@gmail.com>
Tue, 03 Aug 2010 13:52:48 -0300
changeset 11748 37a70a784397
parent 8446 e1f4343db740
permissions -rw-r--r--
py3kcompat: added a "compatibility layer" for py3k This patch adds some ugly constructs. The first of them is bytesformatter, a function that formats strings like when '%' is called. The main motivation for this function is py3k's strange behavior: >>> 'foo %s' % b'bar' "foo b'bar'" >>> b'foo %s' % b'bar' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for %: 'bytes' and 'bytes' >>> b'foo %s' % 'bar' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for %: 'bytes' and 'str' In other words, if we can't format bytes with bytes, and recall that all mercurial strings will be converted by a fixer, then things will break badly if we don't take a similar approach. The other addition with this patch is that the os.environ dictionary is monkeypatched to have bytes items. Hopefully this won't be needed in the future, as python 3.2 might get a os.environb dictionary that holds bytes items.

% changing local directly
merge succeeded
local
base
other
% printing to stdout
local
base
other
 local:
local
base
% conflicts
base
<<<<<<< conflict-local
not other
=======
other
>>>>>>> conflict-other
end
warning: conflicts during merge.
merge failed
% --no-minimal
base
<<<<<<< conflict-local
not other
end
=======
other
end
>>>>>>> conflict-other
warning: conflicts during merge.
% 1 label
base
<<<<<<< foo
not other
=======
other
>>>>>>> conflict-other
end
warning: conflicts during merge.
% 2 labels
base
<<<<<<< foo
not other
=======
other
>>>>>>> bar
end
warning: conflicts during merge.
% too many labels
abort: can only specify two labels.
% binary file
abort: binary-local looks like a binary file.
% binary file --text
warning: binary-local looks like a binary file.
\x00local
base
other
% help
simplemerge [OPTS] LOCAL BASE OTHER

    Simple three-way file merge utility with a minimal feature set.

    Apply to LOCAL the changes necessary to go from BASE to OTHER.

    By default, LOCAL is overwritten with the results of this operation.

options:
 -L --label       labels to use on conflict markers
 -a --text        treat all files as text
 -p --print       print results instead of overwriting LOCAL
    --no-minimal  do not try to minimize conflict regions
 -h --help        display help and exit
 -q --quiet       suppress output
% wrong number of arguments
simplemerge: wrong number of arguments
simplemerge [OPTS] LOCAL BASE OTHER

    Simple three-way file merge utility with a minimal feature set.

    Apply to LOCAL the changes necessary to go from BASE to OTHER.

    By default, LOCAL is overwritten with the results of this operation.

options:
 -L --label       labels to use on conflict markers
 -a --text        treat all files as text
 -p --print       print results instead of overwriting LOCAL
    --no-minimal  do not try to minimize conflict regions
 -h --help        display help and exit
 -q --quiet       suppress output
% bad option
simplemerge: option --foo not recognized
simplemerge [OPTS] LOCAL BASE OTHER

    Simple three-way file merge utility with a minimal feature set.

    Apply to LOCAL the changes necessary to go from BASE to OTHER.

    By default, LOCAL is overwritten with the results of this operation.

options:
 -L --label       labels to use on conflict markers
 -a --text        treat all files as text
 -p --print       print results instead of overwriting LOCAL
    --no-minimal  do not try to minimize conflict regions
 -h --help        display help and exit
 -q --quiet       suppress output