--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-audit-path.t Sat Aug 14 02:26:58 2010 +0200
@@ -0,0 +1,76 @@
+ $ hg init
+
+should fail
+
+ $ hg add .hg/00changelog.i
+ abort: path contains illegal component: .hg/00changelog.i
+
+ $ mkdir a
+ $ echo a > a/a
+ $ hg ci -Ama
+ adding a/a
+ $ ln -s a b
+ $ echo b > a/b
+
+should fail
+
+ $ hg add b/b
+ abort: path 'b/b' traverses symbolic link 'b'
+
+should succeed
+
+ $ hg add b
+
+should still fail - maybe
+
+ $ hg add b/b
+ abort: path 'b/b' traverses symbolic link 'b'
+
+unbundle tampered bundle
+
+ $ hg init target
+ $ cd target
+ $ hg unbundle $TESTDIR/tampered.hg
+ adding changesets
+ adding manifests
+ adding file changes
+ added 5 changesets with 6 changes to 6 files (+4 heads)
+ (run 'hg heads' to see heads, 'hg merge' to merge)
+
+attack .hg/test
+
+ $ hg manifest -r0
+ .hg/test
+ $ hg update -Cr0
+ abort: path contains illegal component: .hg/test
+
+attack foo/.hg/test
+
+ $ hg manifest -r1
+ foo/.hg/test
+ $ hg update -Cr1
+ abort: path 'foo/.hg/test' is inside repo 'foo'
+
+attack back/test where back symlinks to ..
+
+ $ hg manifest -r2
+ back
+ back/test
+ $ hg update -Cr2
+ abort: path 'back/test' traverses symbolic link 'back'
+
+attack ../test
+
+ $ hg manifest -r3
+ ../test
+ $ hg update -Cr3
+ abort: path contains illegal component: ../test
+
+attack /tmp/test
+
+ $ hg manifest -r4
+ /tmp/test
+ $ hg update -Cr4
+ abort: No such file or directory: .*/test-audit-path.t/target//tmp/test
+
+ $ exit 0