mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
1d44bd2bbb
This allows us to write doctests depending on a ui object, but not on global configs. ui.load() is a class method so we can do wsgiui.load(). All ui() calls but for doctests are replaced with ui.load(). Some of them could be changed to not load configs later.
64 lines
1.6 KiB
Python
Executable File
64 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""
|
|
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,
|
|
nullid,
|
|
)
|
|
from mercurial import (
|
|
hg,
|
|
ui as uimod,
|
|
)
|
|
|
|
myui = uimod.ui.load()
|
|
repo = hg.repository(myui, path='.', create=True)
|
|
|
|
fl = repo.file('foobar')
|
|
|
|
def addrev(text, renamed=False):
|
|
if renamed:
|
|
# data doesn't matter. Just make sure filelog.renamed() returns True
|
|
meta = {'copyrev': hex(nullid), 'copy': 'bar'}
|
|
else:
|
|
meta = {}
|
|
|
|
lock = t = None
|
|
try:
|
|
lock = repo.lock()
|
|
t = repo.transaction('commit')
|
|
node = fl.add(text, meta, t, 0, nullid, nullid)
|
|
return node
|
|
finally:
|
|
if t:
|
|
t.close()
|
|
if lock:
|
|
lock.release()
|
|
|
|
def error(text):
|
|
print('ERROR: ' + text)
|
|
|
|
textwith = '\1\nfoo'
|
|
without = '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.')
|