# HG changeset patch # User Alexis S. L. Carvalho # Date 1147642670 10800 # Node ID 6563438219e3710d2ae8bd84fca69c1080e5dbce # Parent 854954fd410a7d6e950f8ddf221be557d37b2004 add test for revlog.parseindex diff -r 854954fd410a -r 6563438219e3 tests/test-parseindex --- /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 diff -r 854954fd410a -r 6563438219e3 tests/test-parseindex.out --- /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