tests/test-command-template
author Giorgos Keramidas <keramida@ceid.upatras.gr>
Tue, 15 Aug 2006 18:14:58 +0300
changeset 2913 05f357b70cb0
parent 1939 d59fc0d4558f
child 3193 a6d0cd63068c
permissions -rwxr-xr-x
Tune a bit the extdiff toplevel comments/samples. * Capitalize the first letter of all sentences * Add an example for GNU diff(1) 'context diff' mode. * Explain the requirement for separate cmd.xxx and opts.xxx options in .hgrc, which hopefully will guard against users trying to add: [extdiff] # Add a new Mercurial command called `cdiff', which calls # GNU diff(1) in 'context diff' mode. cmd.cdiff = diff -Nprc5 which fails for recent crew builds with: $ hg cdiff . making snapshot of 1 files from rev 07dc4a569f4e making snapshot of 1 files from working dir diff -Nprc5: not found The correct way to do this is by separating the cmd.cdiff and opts.cdiff parts like this: [extdiff] # Add a new Mercurial command called `cdiff', which calls # GNU diff(1) in 'context diff' mode. cmd.cdiff = diff opts.cdiff = -Nprc5 so add it as a new example and explicitly describe it in the extdiff comments.

#!/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'

# 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'
hg log > log.out
hg log --style default > style.out
diff log.out style.out
hg log -v > log.out
hg log -v --style default > style.out
diff log.out style.out
hg log --debug > log.out
hg log --debug --style default > style.out
diff log.out style.out

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

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 -f q
echo '{rev}' > q
hg log --style ./t

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

echo "# keys work"
for key in author branches date desc file_adds file_dels files \
        manifest node parents rev tags; 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 --template '{date|date}\n'
hg log --template '{date|isodate}\n'
hg log --template '{date|rfc822date}\n'
hg log --template '{desc|firstline}\n'
hg log --template '{node|short}\n'

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

echo '# done'