# HG changeset patch # User Christian Ebert # Date 1184786972 -7200 # Node ID 247159261ba5a44d79d9d82425d6e77592e456fe # Parent c5e1a361d00932f6cdf57a45bc0e8ffec085a439 Add backwards compatible test-suite Without symlink testing, as older Hg versions don't handle them. diff -r c5e1a361d009 -r 247159261ba5 tests/test-keyword --- /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 <> $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 ' +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 ' +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 <>$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 <> 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 ' +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 <> .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 diff -r c5e1a361d009 -r 247159261ba5 tests/test-keyword.out --- /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 : firstline $ +ignore $Id$ +% hg cat +expand $Id: a 6ade9dd7b017 Thu, 01 Jan 1970 00:00:02 +0000 user $ +$Xinfo: User Name : 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 +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 : firstline $ +ignore $Id$ +% cat +expand $Id$ +$Xinfo$ +ignore $Id$ +% hg cat +expand $Id$ +$Xinfo$ +ignore $Id$