--- a/tests/test-hook.t Sat Apr 30 12:02:09 2011 -0500
+++ b/tests/test-hook.t Sun May 01 11:12:36 2011 +0200
@@ -168,6 +168,61 @@
update hook: HG_ERROR=0 HG_PARENT1=539e4b31b6dc
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+pushkey hook
+
+ $ echo 'pushkey = python "$TESTDIR"/printenv.py pushkey' >> .hg/hgrc
+ $ cd ../b
+ $ hg bookmark -r null foo
+ $ hg push -B foo ../a
+ pushing to ../a
+ searching for changes
+ no changes found
+ exporting bookmark foo
+ pushkey hook: HG_KEY=foo HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000 HG_RET=1
+ $ cd ../a
+
+listkeys hook
+
+ $ echo 'listkeys = python "$TESTDIR"/printenv.py listkeys' >> .hg/hgrc
+ $ hg bookmark -r null bar
+ $ cd ../b
+ $ hg pull -B bar ../a
+ pulling from ../a
+ listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
+ searching for changes
+ listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
+ importing bookmark bar
+ $ cd ../a
+
+test that prepushkey can prevent incoming keys
+
+ $ echo 'prepushkey = python "$TESTDIR"/printenv.py prepushkey.forbid 1' >> .hg/hgrc
+ $ cd ../b
+ $ hg bookmark -r null baz
+ $ hg push -B baz ../a
+ pushing to ../a
+ searching for changes
+ no changes found
+ listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
+ listkeys hook: HG_NAMESPACE=bookmarks HG_VALUES={'bar': '0000000000000000000000000000000000000000', 'foo': '0000000000000000000000000000000000000000'}
+ exporting bookmark baz
+ prepushkey.forbid hook: HG_KEY=baz HG_NAMESPACE=bookmarks HG_NEW=0000000000000000000000000000000000000000
+ abort: prepushkey hook exited with status 1
+ [255]
+ $ cd ../a
+
+test that prelistkeys can prevent listing keys
+
+ $ echo 'prelistkeys = python "$TESTDIR"/printenv.py prelistkeys.forbid 1' >> .hg/hgrc
+ $ hg bookmark -r null quux
+ $ cd ../b
+ $ hg pull -B quux ../a
+ pulling from ../a
+ prelistkeys.forbid hook: HG_NAMESPACE=bookmarks
+ abort: prelistkeys hook exited with status 1
+ [255]
+ $ cd ../a
+
prechangegroup hook can prevent incoming changes
$ cd ../b