diff tests/test-custom-filters @ 6066:f3a8b5360100

Strip filter name from command before passing to filter function. The new registration of in-process data filters (introduced in f8ad3b76e923 & 11af38a592ae) failed to correctly strip the filter name from its arguments before passing the "command" to the filter function. Thus a registration such as [decode] *.gz = compress: -9 would result in the associated filter function being called with the argument 'compress: -9' rather than just '-9' as expected.
author Jesse Glick <jesse.glick@sun.com>
date Sat, 09 Feb 2008 12:27:58 -0500
parents
children a964ab624385
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-custom-filters	Sat Feb 09 12:27:58 2008 -0500
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+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
+
+echo '% Repository data:'
+hg cat stuff.txt
+
+echo '% Fresh checkout:'
+rm stuff.txt
+hg up
+cat stuff.txt
+echo >> stuff.txt <<EOF
+Very very carefully.
+EOF
+hg stat
+
+cat > morestuff.txt <<EOF
+Unauthorized material subject to destruction.
+EOF
+
+echo '% Problem encoding:'
+hg add morestuff.txt
+hg ci -m morestuff
+hg stat