view tests/test-command-template @ 10301:56b50194617f

templates: rename `Last change' column in hgwebdir repository list. This patch changes column headers in the templates that previously said `Last change' to `Last modified'. Neither code nor functionality are changed other than that. For some time now, I have been annoyed by the fact the `Last change' column didn't list the age of the youngest changeset in the repository, or at least tip. It just occurred to me that this is because the wording is slightly misleading; what the column in fact lists is when the repository was last *modified*, that is, when changesets was last added or removed from it. The word `change' can be understood as referring to the changeset itself. Using `changed' would be ever so slightly less amigous. However, the standard nomenclature in this case is `modification date' and `Last modified', which is incidentally entirely unambigous. Hence, `Last modified' is the wording used.
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Sun, 24 Jan 2010 20:51:53 +0100
parents fe699ca08a45
children ace5bd98bee3
line wrap: on
line source

#!/bin/sh

hg init a
cd a
echo a > a
hg add a
echo line 1 > b
echo line 2 >> b
hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>'
hg add b
echo other 1 > c
echo other 2 >> c
echo >> c
echo other 3 >> c
hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>'
hg add c
hg commit -m 'no person' -d '1200000 0' -u 'other@place'
echo c >> c
hg commit -m 'no user, no domain' -d '1300000 0' -u 'person'
echo foo > .hg/branch
hg commit -m 'new branch' -d '1400000 0' -u 'person'
hg co -q 3
echo other 4 >> d
hg add d
hg commit -m 'new head' -d '1500000 0' -u 'person'
hg merge -q foo
hg commit -m 'merge' -d '1500001 0' -u 'person'
# second branch starting at nullrev
hg update null
echo second > second
hg add second
hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>'
echo third > third
hg add third
hg mv second fourth
hg commit -m third -d "2020-01-01 10:01"

# make sure user/global hgrc does not affect tests
echo '[ui]' > .hg/hgrc
echo 'logtemplate =' >> .hg/hgrc
echo 'style =' >> .hg/hgrc

echo '# default style is like normal output'
echo '#  normal'
hg log > log.out
hg log --style default > style.out
cmp log.out style.out || diff -u log.out style.out
echo '#  verbose'
hg log -v > log.out
hg log -v --style default > style.out
cmp log.out style.out || diff -u log.out style.out
echo '#  debug'
hg log --debug > log.out
hg log --debug --style default > style.out
cmp log.out style.out || diff -u log.out style.out

echo '# revision with no copies (used to print a traceback)'
hg tip -v --template '\n'

echo '# compact style works'
hg log --style compact
hg log -v --style compact
hg log --debug --style compact

# Test xml styles
echo '# xml style works (--style xml)'
hg log --style xml
echo '# xml style works (-v --style xml)'
hg log -v --style xml
echo '# xml style works (--debug --style xml)'
hg log --debug --style xml

echo '# error if style not readable'
touch q
chmod 0 q
hg log --style ./q

echo '# error if no style'
hg log --style notexist

echo '# error if style missing key'
echo 'q = q' > t
hg log --style ./t

echo '# error if include fails'
echo 'changeset = q' >> t
hg log --style ./t

echo '# include works'
rm q
echo '{rev}' > q
hg log --style ./t

echo '# ui.style works'
echo '[ui]' > .hg/hgrc
echo 'style = t' >> .hg/hgrc
hg log

echo '# issue338'
hg log --style=changelog > changelog
cat changelog

echo "# keys work"
for key in author branches date desc file_adds file_dels file_mods \
        file_copies file_copies_switch files \
        manifest node parents rev tags diffstat extras; do
    for mode in '' --verbose --debug; do
        hg log $mode --template "$key$mode: {$key}\n"
    done
done

echo '# filters work'
hg log --template '{author|domain}\n'
hg log --template '{author|person}\n'
hg log --template '{author|user}\n'
hg log --template '{date|age}\n' > /dev/null || exit 1
hg log -l1 --template '{date|age}\n' 
hg log --template '{date|date}\n'
hg log --template '{date|isodate}\n'
hg log --template '{date|isodatesec}\n'
hg log --template '{date|rfc822date}\n'
hg log --template '{desc|firstline}\n'
hg log --template '{node|short}\n'
hg log --template '<changeset author="{author|xmlescape}"/>\n'

echo '# formatnode filter works'
echo '#  quiet'
hg -q log -r 0 --template '{node|formatnode}\n'
echo '#  normal'
hg log -r 0 --template '{node|formatnode}\n'
echo '#  verbose'
hg -v log -r 0 --template '{node|formatnode}\n'
echo '#  debug'
hg --debug log -r 0 --template '{node|formatnode}\n'

echo '# error on syntax'
echo 'x = "f' >> t
hg log

cd ..

echo '# latesttag'
hg init latesttag
cd latesttag

echo a > file
hg ci -Am a -d '0 0'

echo b >> file
hg ci -m b -d '1 0'

echo c >> head1
hg ci -Am h1c -d '2 0'

hg update -q 1
echo d >> head2
hg ci -Am h2d -d '3 0'

echo e >> head2
hg ci -m h2e -d '4 0'

hg merge -q
hg ci -m merge -d '5 0'

echo '# No tag set'
hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'

echo '# one common tag: longuest path wins'
hg tag -r 1 -m t1 -d '6 0' t1
hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'

echo '# one ancestor tag: more recent wins'
hg tag -r 2 -m t2 -d '7 0' t2
hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'

echo '# two branch tags: more recent wins'
hg tag -r 3 -m t3 -d '8 0' t3
hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'

echo '# merged tag overrides'
hg tag -r 5 -m t5 -d '9 0' t5
hg tag -r 3 -m at3 -d '10 0' at3
hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
cd ..

echo '# style path expansion (issue1948)'
mkdir -p home/styles
cat > home/styles/teststyle <<EOF
changeset = 'test {rev}:{node|short}\n'
EOF
HOME=`pwd`/home; export HOME
cat > latesttag/.hg/hgrc <<EOF
[ui]
style = ~/styles/teststyle
EOF
hg -R latesttag tip

echo '# test recursive showlist template (issue1989)'
cat > style1989 <<EOF
changeset = '{file_mods}{manifest}{extras}'
file_mod  = 'M|{author|person}\n'
manifest = '{rev},{author}\n'
extra = '{key}: {author}\n'
EOF
hg -R latesttag log -r tip --style=style1989

echo '# done'