Add backwards compatible test-suite
Without symlink testing, as older Hg versions don't handle them.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-keyword Wed Jul 18 21:29:32 2007 +0200
@@ -0,0 +1,133 @@
+#!/bin/sh
+
+cat <<EOF >> $HGRCPATH
+[extensions]
+hgext.keyword =
+[keyword]
+* =
+b = ignore
+EOF
+
+echo % help
+hg help keyword
+
+echo % hg kwdemo
+hg --quiet kwdemo --default \
+| sed -e 's![^ ][^ ]*demo.txt,v!/TMP/demo.txt,v!' \
+ -e 's/,v [a-z0-9][a-z0-9]* /,v xxxxxxxxxxxx /' \
+ -e '/[$]Revision/ s/: [a-z0-9][a-z0-9]* /: xxxxxxxxxxxx /' \
+ -e 's! 20[0-9][0-9]/[01][0-9]/[0-3][0-9] [0-2][0-9]:[0-6][0-9]:[0-6][0-9]! 2000/00/00 00:00:00!'
+
+hg init Test
+cd Test
+
+echo % kwshrink should abort in empty/invalid repo
+hg kwshrink
+
+echo 'expand $Id$' > a
+echo 'ignore $Id$' > b
+echo % cat
+cat a b
+
+echo % default keyword expansion
+echo % commit
+hg --debug commit -A -mab -d '0 0' -u 'User Name <user@example.com>'
+echo % status
+hg status
+echo % identify
+hg --quiet identify
+echo % cat
+cat a b
+echo % hg cat
+hg cat a b
+
+echo % touch
+touch a b
+echo % status
+hg status
+
+rm a b
+echo % update
+hg update
+echo % cat
+cat a b
+
+echo % copy
+hg cp a c
+echo % commit
+hg --debug commit -ma2c -d '1 0' -u 'User Name <user@example.com>'
+echo % cat a c
+cat a c
+echo % touch copied c
+touch c
+echo % status
+
+echo % rollback
+hg rollback
+echo % status
+hg status
+echo % update -C
+hg update --clean
+
+echo % custom keyword expansion
+echo % try with kwdemo
+hg --quiet kwdemo "Xinfo = {author}: {desc}"
+
+cat <<EOF >>$HGRCPATH
+[keywordmaps]
+Id = {file} {node|short} {date|rfc822date} {author|user}
+Xinfo = {author}: {desc}
+EOF
+
+echo % cat
+cat a b
+echo % hg cat
+hg cat a b
+
+echo '$Xinfo$' >> a
+cat <<EOF >> log
+firstline
+secondline
+EOF
+
+echo % interrupted commit
+HGEDITOR=false hg commit
+echo % status
+hg status
+
+echo % commit
+hg --debug commit -l log -d '2 0' -u 'User Name <user@example.com>'
+rm log
+echo % status
+hg status
+
+echo % cat
+cat a b
+echo % hg cat
+hg cat a b
+
+cd ..
+hg clone -r0 Test Test-a
+cd Test-a
+cat <<EOF >> .hg/hgrc
+[paths]
+default = ../Test
+EOF
+echo % incoming
+# remove path to temp dir
+hg incoming | sed -e 's/^\(comparing with \).*\(test-keyword.*\)/\1\2/'
+
+echo % switch off expansion
+cd ../Test
+echo % kwshrink
+hg --debug kwshrink
+echo % cat
+cat a b
+echo % hg cat
+hg cat a b
+
+rm $HGRCPATH
+echo % cat
+cat a b
+echo % hg cat
+hg cat a b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-keyword.out Wed Jul 18 21:29:32 2007 +0200
@@ -0,0 +1,175 @@
+% help
+keyword extension - keyword expansion in local repositories
+
+This extension expands RCS/CVS-like or self-customized $Keywords$
+in the text files selected by your configuration.
+
+Keywords are only expanded in local repositories and not logged by
+Mercurial internally. The mechanism can be regarded as a convenience
+for the current user or archive distribution.
+
+Configuration is done in the [keyword] and [keywordmaps] sections of
+hgrc files.
+
+Example:
+ [extensions]
+ hgext.keyword =
+
+ [keyword]
+ # expand keywords in every python file except those matching "x*"
+ **.py =
+ x* = ignore
+
+Note: the more specific you are in your [keyword] filename patterns
+ the less you lose speed in huge repos.
+
+For a [keywordmaps] template mapping and expansion demonstration
+run "hg kwdemo".
+
+An additional date template filter {date|utcdate} is provided.
+
+You can replace the default template mappings with customized keywords
+and templates of your choice.
+Again, run "hg kwdemo" to control the results of your config changes.
+
+When you change keyword configuration, especially the active keywords,
+and do not want to store expanded keywords in change history, run
+"hg kwshrink", and then change configuration.
+
+Caveat: "hg import" fails if the patch context contains an active
+ keyword. In that case run "hg kwshrink", reimport, and then
+ "hg kwexpand".
+ Or, better, use bundle/unbundle to share changes.
+
+list of commands (use "hg help -v keyword" to show aliases and global options):
+
+ kwdemo print [keywordmaps] configuration and an expansion example
+ kwexpand expand keywords in working directory
+ kwshrink revert expanded keywords in working directory
+% hg kwdemo
+[keyword]
+demo.txt =
+[keywordmaps]
+RCSFile = {file|basename},v
+Author = {author|user}
+Header = {root}/{file},v {node|short} {date|utcdate} {author|user}
+Source = {root}/{file},v
+Date = {date|utcdate}
+Id = {file|basename},v {node|short} {date|utcdate} {author|user}
+Revision = {node|short}
+$RCSFile: demo.txt,v $
+$Author: test $
+$Header: /TMP/demo.txt,v xxxxxxxxxxxx 2000/00/00 00:00:00 test $
+$Source: /TMP/demo.txt,v $
+$Date: 2000/00/00 00:00:00 $
+$Id: demo.txt,v xxxxxxxxxxxx 2000/00/00 00:00:00 test $
+$Revision: xxxxxxxxxxxx $
+% kwshrink should abort in empty/invalid repo
+abort: no changeset found!
+% cat
+expand $Id$
+ignore $Id$
+% default keyword expansion
+% commit
+adding a
+adding b
+a
+b
+overwriting a expanding keywords
+% status
+% identify
+65cbcc9534b0
+% cat
+expand $Id: a,v 65cbcc9534b0 1970/01/01 00:00:00 user $
+ignore $Id$
+% hg cat
+expand $Id: a,v 65cbcc9534b0 1970/01/01 00:00:00 user $
+ignore $Id$
+% touch
+% status
+% update
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+% cat
+expand $Id: a,v 65cbcc9534b0 1970/01/01 00:00:00 user $
+ignore $Id$
+% copy
+% commit
+c
+ c: copy a:e6cc15c9eb5fd3c09ec691b667cf6ccd6dfb936e
+overwriting c expanding keywords
+% cat a c
+expand $Id: a,v 65cbcc9534b0 1970/01/01 00:00:00 user $
+expand $Id: c,v 9460ba56f8d0 1970/01/01 00:00:01 user $
+% touch copied c
+% status
+% rollback
+rolling back last transaction
+% status
+A c
+% update -C
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+% custom keyword expansion
+% try with kwdemo
+[keyword]
+demo.txt =
+[keywordmaps]
+Xinfo = {author}: {desc}
+$Xinfo: test: hg keyword config and expansion example $
+% cat
+expand $Id: a,v 65cbcc9534b0 1970/01/01 00:00:00 user $
+ignore $Id$
+% hg cat
+expand $Id: a 65cbcc9534b0 Thu, 01 Jan 1970 00:00:00 +0000 user $
+ignore $Id$
+% interrupted commit
+abort: edit failed: false exited with status 1
+transaction abort!
+rollback completed
+% status
+M a
+? log
+% commit
+a
+overwriting a expanding keywords
+% status
+% cat
+expand $Id: a 6ade9dd7b017 Thu, 01 Jan 1970 00:00:02 +0000 user $
+$Xinfo: User Name <user@example.com>: firstline $
+ignore $Id$
+% hg cat
+expand $Id: a 6ade9dd7b017 Thu, 01 Jan 1970 00:00:02 +0000 user $
+$Xinfo: User Name <user@example.com>: firstline $
+ignore $Id$
+requesting all changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 2 changes to 2 files
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+% incoming
+searching for changes
+changeset: 1:6ade9dd7b017
+tag: tip
+user: User Name <user@example.com>
+date: Thu Jan 01 00:00:02 1970 +0000
+summary: firstline
+
+% switch off expansion
+% kwshrink
+overwriting a shrinking keywords
+% cat
+expand $Id$
+$Xinfo$
+ignore $Id$
+% hg cat
+expand $Id: a 6ade9dd7b017 Thu, 01 Jan 1970 00:00:02 +0000 user $
+$Xinfo: User Name <user@example.com>: firstline $
+ignore $Id$
+% cat
+expand $Id$
+$Xinfo$
+ignore $Id$
+% hg cat
+expand $Id$
+$Xinfo$
+ignore $Id$