sapling/tests/test-linkrevcache-linkrevdb.py
2018-01-09 16:55:34 -08:00

54 lines
1.4 KiB
Python

from __future__ import absolute_import, print_function
import os
import sys
import tempfile
# make it runnable using python directly without run-tests.py
sys.path[0:0] = [os.path.join(os.path.dirname(__file__), '..', 'hgext3rd')]
from hgext import linkrevcache
def genhsh(i):
return chr(i) + b'\0' * 19
def ensure(condition):
if not condition:
raise RuntimeError('Unexpected')
def testbasicreadwrite():
path = tempfile.mkdtemp()
db = linkrevcache.linkrevdb(path, write=True)
ensure(db.getlastrev() == 0)
for i in xrange(25):
fname = str(i % 5)
fnode = genhsh(i // 5)
ensure(db.getlinkrevs(fname, fnode) == [])
db.appendlinkrev(fname, fnode, i)
ensure(db.getlinkrevs(fname, fnode) == [i])
db.appendlinkrev(fname, fnode, i)
db.appendlinkrev(fname, fnode, i + 1)
db.appendlinkrev(fname, fnode, i)
ensure(db.getlinkrevs(fname, fnode) == [i, i + 1])
db.setlastrev(i)
ensure(db.getlastrev() == i)
db.close()
# re-open for reading
db = linkrevcache.linkrevdb(path)
ensure(db.getlastrev() == 24)
for i in xrange(25):
fname = str(i % 5)
fnode = genhsh(i // 5)
ensure(db.getlinkrevs(fname, fnode) == [i, i + 1])
for i in xrange(26, 50):
fname = str(i % 5)
fnode = genhsh(i // 5)
ensure(db.getlinkrevs(fname, fnode) == [])
testbasicreadwrite()