Mercurial > hg
view tests/test-extdiff @ 12252:4481f8a93c7a stable
convert/darcs: handle non-ASCII metadata in darcs changelog (issue2354)
Given a commit author or message with non-ASCII characters in a darcs
repo, convert would raise a UnicodeEncodeError when adding changesets
to the hg changelog.
This happened because etree returns back unicode objects for any text
it can't encode into ASCII. convert was passing these objects to
changelog.add(), which would then attempt encoding.fromlocal() on
them.
This patch ensures converter_source.recode() is called on each piece
of commit data returned by etree.
(Also note that darcs is currently encoding agnostic and will print
out whatever is in a patch's metadata byte-for-byte, even in the XML
changelog.)
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Fri, 10 Sep 2010 09:30:50 -0500 |
parents | c52057614c72 |
children |
line wrap: on
line source
#!/bin/sh echo "[extensions]" >> $HGRCPATH echo "extdiff=" >> $HGRCPATH hg init a cd a echo a > a echo b > b hg add # should diff cloned directories hg extdiff -o -r $opt echo "[extdiff]" >> $HGRCPATH echo "cmd.falabala=echo" >> $HGRCPATH echo "opts.falabala=diffing" >> $HGRCPATH hg falabala hg help falabala hg ci -d '0 0' -mtest1 echo b >> a hg ci -d '1 0' -mtest2 # should diff cloned files directly hg falabala -r 0:1 # test diff during merge hg update -C 0 echo c >> c hg add c hg ci -m "new branch" -d '1 0' hg merge 1 # should diff cloned file against wc file hg falabala > out # cleanup the output since the wc is a tmp directory sed 's:\(diffing [^ ]* \).*\(\/test-extdiff\):\1[tmp]\2:' out # test --change option hg ci -d '2 0' -mtest3 hg falabala -c 1 # check diff are made from the first parent hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code" #hg log echo echo '% test extdiff of multiple files in tmp dir:' hg update -C 0 > /dev/null echo changed > a echo changed > b chmod +x b echo '% diff in working directory, before' hg diff --git echo '% edit with extdiff -p' # prepare custom diff/edit tool cat > 'diff tool.py' << EOT #!/usr/bin/env python import time time.sleep(1) # avoid unchanged-timestamp problems file('a/a', 'ab').write('edited\n') file('a/b', 'ab').write('edited\n') EOT chmod +x 'diff tool.py' hg extdiff -p "`pwd`/diff tool.py" # will change to /tmp/extdiff.TMP and populate directories a.TMP and a and start tool echo '% diff in working directory, after' hg diff --git echo echo % test extdiff with --option hg extdiff -p echo -o this -c 1 hg falabala -o this -c 1 echo