--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-parseindex Sun May 14 18:37:50 2006 -0300
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# revlog.parseindex must be able to parse the index file even if
+# an index entry is split between two 64k blocks. The ideal test
+# would be to create an index file with inline data where
+# 64k < size < 64k + 64 (64k is the size of the read buffer, 64 is
+# the size of an index entry) and with an index entry starting right
+# before the 64k block boundary, and try to read it.
+#
+# We approximate that by reducing the read buffer to 1 byte.
+#
+
+hg init a
+cd a
+echo abc > foo
+hg add foo
+hg commit -m 'add foo' -d '1000000 0'
+
+echo >> foo
+hg commit -m 'change foo' -d '1000001 0'
+hg log -r 0:
+
+cat >> test.py << EOF
+from mercurial import changelog, util
+from mercurial.node import *
+
+class singlebyteread(object):
+ def __init__(self, real):
+ self.real = real
+
+ def read(self, size=-1):
+ if size == 65536:
+ size = 1
+ return self.real.read(size)
+
+ def __getattr__(self, key):
+ return getattr(self.real, key)
+
+def opener(*args):
+ o = util.opener(*args)
+ def wrapper(*a):
+ f = o(*a)
+ return singlebyteread(f)
+ return wrapper
+
+cl = changelog.changelog(opener('.hg'))
+print cl.count(), 'revisions:'
+for r in xrange(cl.count()):
+ print short(cl.node(r))
+EOF
+
+python test.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-parseindex.out Sun May 14 18:37:50 2006 -0300
@@ -0,0 +1,14 @@
+changeset: 0:9c2cf2b35aa7
+user: test
+date: Mon Jan 12 13:46:40 1970 +0000
+summary: add foo
+
+changeset: 1:3756a9556b89
+tag: tip
+user: test
+date: Mon Jan 12 13:46:41 1970 +0000
+summary: change foo
+
+2 revisions:
+9c2cf2b35aa7
+3756a9556b89