view tests/test-mv-cp-st-diff @ 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 83cfa1baf8ad
children
line wrap: on
line source

#!/bin/sh

add()
{
    echo $2 >> $1
}

hg init t
cd t

# set up a boring main branch
add a a
hg add a
mkdir x
add x/x x
hg add x/x
hg ci -m0

add a m1
hg ci -m1

add a m2
add x/y y1
hg add x/y
hg ci -m2
cd ..

show()
{
    echo "- $2: $1"
    hg st -C $1
    echo
    hg diff --git $1
    echo
}

count=0
# make a new branch and get diff/status output
# $1 - first commit
# $2 - second commit
# $3 - working dir action
# $4 - test description
tb()
{
    hg clone t t2 ; cd t2
    hg co -q -C 0

    add a $count
    count=`expr $count + 1`
    hg ci -m "t0"
    $1
    hg ci -m "t1"
    $2
    hg ci -m "t2"
    $3

    echo "** $4 **"
    echo "** $1 / $2 / $3"
    show "" "working to parent"
    show "--rev 0" "working to root"
    show "--rev 2" "working to branch"
    show "--rev 0 --rev ." "root to parent"
    show "--rev . --rev 0" "parent to root"
    show "--rev 2 --rev ." "branch to parent"
    show "--rev . --rev 2" "parent to branch"
    echo
    cd ..
    rm -rf t2
}


tb "add a a1" "add a a2" "hg mv a b" "rename in working dir"
tb "add a a1" "add a a2" "hg cp a b" "copy in working dir" 
tb "hg mv a b" "add b b1" "add b w" "single rename"
tb "hg cp a b" "add b b1" "add a w" "single copy"
tb "hg mv a b" "hg mv b c" "hg mv c d" "rename chain"
tb "hg cp a b" "hg cp b c" "hg cp c d" "copy chain"
tb "add a a1" "hg mv a b" "hg mv b a" "circular rename"

tb "hg mv x y" "add y/x x1" "add y/x x2" "directory move"

# Cannot implement unrelated branch with tb
echo '% testing copies with unrelated branch'
hg init unrelated
cd unrelated
add a a
hg ci -Am adda
hg mv a b
hg ci -m movea
hg up -C null
add a a
hg ci -Am addunrelateda
echo '% unrelated branch diff'
hg diff --git -r 2 -r 1
cd ..