--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-custom-filters.t Mon Aug 30 18:57:48 2010 +0900
@@ -0,0 +1,69 @@
+ $ hg init
+
+ $ cat > .hg/hgrc <<EOF
+ > [extensions]
+ > prefixfilter = prefix.py
+ > [encode]
+ > *.txt = stripprefix: Copyright 2046, The Masters
+ > [decode]
+ > *.txt = insertprefix: Copyright 2046, The Masters
+ > EOF
+
+ $ cat > prefix.py <<EOF
+ > from mercurial import util
+ > def stripprefix(s, cmd, filename, **kwargs):
+ > header = '%s\n' % cmd
+ > if s[:len(header)] != header:
+ > raise util.Abort('missing header "%s" in %s' % (cmd, filename))
+ > return s[len(header):]
+ > def insertprefix(s, cmd):
+ > return '%s\n%s' % (cmd, s)
+ > def reposetup(ui, repo):
+ > repo.adddatafilter('stripprefix:', stripprefix)
+ > repo.adddatafilter('insertprefix:', insertprefix)
+ > EOF
+
+ $ cat > .hgignore <<EOF
+ > .hgignore
+ > prefix.py
+ > prefix.pyc
+ > EOF
+
+ $ cat > stuff.txt <<EOF
+ > Copyright 2046, The Masters
+ > Some stuff to ponder very carefully.
+ > EOF
+ $ hg add stuff.txt
+ $ hg ci -m stuff
+
+Repository data:
+
+ $ hg cat stuff.txt
+ Some stuff to ponder very carefully.
+
+Fresh checkout:
+
+ $ rm stuff.txt
+ $ hg up -C
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ cat stuff.txt
+ Copyright 2046, The Masters
+ Some stuff to ponder very carefully.
+ $ echo >> stuff.txt <<EOF
+ > Very very carefully.
+ > EOF
+ $ hg stat
+ M stuff.txt
+
+ $ cat > morestuff.txt <<EOF
+ > Unauthorized material subject to destruction.
+ > EOF
+
+Problem encoding:
+
+ $ hg add morestuff.txt
+ $ hg ci -m morestuff
+ abort: missing header "Copyright 2046, The Masters" in morestuff.txt
+ $ hg stat
+ M stuff.txt
+ A morestuff.txt