##// END OF EJS Templates
node: replace nullid and friends with nodeconstants class [WIP]...
node: replace nullid and friends with nodeconstants class [WIP] The introduction of 256bit hashes require changes to nullid and other constant magic values. Start pushing them down from repository and revlog where sensible. Note: this review contains two parts for correctness checks that need to be removed before the final merge. There are a couple of asserts in the manifest classes etc to ensure that the nodeconstants argument is sane. This ensured the correct API update. The other part is commenting out the legacy names in node.py. That will move under an environment flag for now and is not intended for the repo as is. The rest of the changeset is reviewable. Differential Revision: https://phab.mercurial-scm.org/D9465

File last commit:

r47758:07b9ebea default
r47758:07b9ebea default
Show More
test-filelog.py
65 lines | 1.6 KiB | text/x-python | PythonLexer
#!/usr/bin/env python3
"""
Tests the behavior of filelog w.r.t. data starting with '\1\n'
"""
from __future__ import absolute_import, print_function
from mercurial.node import hex
from mercurial import (
hg,
ui as uimod,
)
myui = uimod.ui.load()
repo = hg.repository(myui, path=b'.', create=True)
fl = repo.file(b'foobar')
def addrev(text, renamed=False):
if renamed:
# data doesn't matter. Just make sure filelog.renamed() returns True
meta = {b'copyrev': hex(repo.nullid), b'copy': b'bar'}
else:
meta = {}
lock = t = None
try:
lock = repo.lock()
t = repo.transaction(b'commit')
node = fl.add(text, meta, t, 0, repo.nullid, repo.nullid)
return node
finally:
if t:
t.close()
if lock:
lock.release()
def error(text):
print('ERROR: ' + text)
textwith = b'\1\nfoo'
without = b'foo'
node = addrev(textwith)
if not textwith == fl.read(node):
error('filelog.read for data starting with \\1\\n')
if fl.cmp(node, textwith) or not fl.cmp(node, without):
error('filelog.cmp for data starting with \\1\\n')
if fl.size(0) != len(textwith):
error(
'FIXME: This is a known failure of filelog.size for data starting '
'with \\1\\n'
)
node = addrev(textwith, renamed=True)
if not textwith == fl.read(node):
error('filelog.read for a renaming + data starting with \\1\\n')
if fl.cmp(node, textwith) or not fl.cmp(node, without):
error('filelog.cmp for a renaming + data starting with \\1\\n')
if fl.size(1) != len(textwith):
error('filelog.size for a renaming + data starting with \\1\\n')
print('OK.')