view tests/test-log @ 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 efbc09fdefd8
children dbb98d8fbcaf 28ddf67198b2
line wrap: on
line source

#!/bin/sh

hg init a

cd a
echo a > a
hg ci -Ama -d '1 0'

hg cp a b
hg ci -mb -d '2 0'

mkdir dir
hg mv b dir
hg ci -mc -d '3 0'

hg mv a b
echo a > d
hg add d
hg ci -md -d '4 0'

hg mv dir/b e
hg ci -me -d '5 0'

hg log a
echo % -f, directory
hg log -f dir
echo % -f, but no args
hg log -f
echo % one rename
hg log -vf a
echo % many renames
hg log -vf e

echo % log -pf dir/b
hg log -pf dir/b
echo % log -vf dir/b
hg log -vf dir/b

echo '% log copies with --copies'
hg log -vC --template '{rev} {file_copies}\n'
echo '% log copies switch without --copies, with old filecopy template'
hg log -v --template '{rev} {file_copies_switch%filecopy}\n'
echo '% log copies switch with --copies'
hg log -vC --template '{rev} {file_copies_switch}\n'

echo '% log copies with hardcoded style and with --style=default'
hg log -vC -r4
hg log -vC -r4 --style=default

echo % log copies, non-linear manifest
hg up -C 3
hg mv dir/b e
echo foo > foo
hg ci -Ame2 -d '6 0'
hg log -v --template '{rev} {file_copies}\n' -r 5

echo % log copies, execute bit set
chmod +x e
hg ci -me3 -d '7 0'
hg log -v --template '{rev} {file_copies}\n' -r 6

echo '% log -p d'
hg log -pv d

# log --follow tests
hg init ../follow
cd ../follow

echo base > base
hg ci -Ambase -d '1 0'

echo r1 >> base
hg ci -Amr1 -d '1 0'
echo r2 >> base
hg ci -Amr2 -d '1 0'

hg up -C 1
echo b1 > b1
hg ci -Amb1 -d '1 0'

echo % log -f
hg log -f

hg up -C 0
echo b2 > b2
hg ci -Amb2 -d '1 0'

echo % log -f -r 1:tip
hg log -f -r 1:tip

hg up -C 3
hg merge tip

echo % log -r .  with two parents
hg log -r .

hg ci -mm12 -d '1 0'

echo % log -r .  with one parent
hg log -r .

echo postm >> b1
hg ci -Amb1.1 -d'1 0'

echo % log --follow-first
hg log --follow-first

echo % log -P 2
hg log -P 2

echo '% log -r tip -p --git'
hg log -r tip -p --git

echo '% log -r ""'
hg log -r ''

echo '% log -r <some unknown node id>'
hg log -r 1000000000000000000000000000000000000000

echo '% log -k r1'
hg log -k r1

echo '% log -d -1'
hg log -d -1

echo '% log -p -l2 --color=always'
hg --config extensions.color= --config color.mode=ansi \
    log -p -l2 --color=always

echo '% log -r tip --stat'
hg log -r tip --stat

cd ..

hg init usertest
cd usertest

echo a > a
hg ci -A -m "a" -u "User One <user1@example.org>"
echo b > b
hg ci -A -m "b" -u "User Two <user2@example.org>"

hg log -u "User One <user1@example.org>"
hg log -u "user1" -u "user2"
hg log -u "user3"

cd ..

hg init branches
cd branches

echo a > a
hg ci -A -m "commit on default"
hg branch test
echo b > b
hg ci -A -m "commit on test"

hg up default
echo c > c
hg ci -A -m "commit on default"
hg up test
echo c > c
hg ci -A -m "commit on test"

echo '% log -b default'
hg log -b default

echo '% log -b test'
hg log -b test

echo '% log -b dummy'
hg log -b dummy

echo '% log -b .'
hg log -b .

echo '% log -b default -b test'
hg log -b default -b test

echo '% log -b default -b .'
hg log -b default -b .

echo '% log -b . -b test'
hg log -b . -b test

echo '% log -b 2'
hg log -b 2

echo '% log -p --cwd dir (in subdir)'
mkdir dir
hg log -p --cwd dir

echo '% log -p -R repo'
cd dir
hg log -p -R .. ../a


exit 0