mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
e3057a06d5
Because "\1\n" is a separator for metadata, data starting with "\1\n" is handled specifically. It was not tested. size() call return incorrect data if original data had been "\1\n-escaped". There's no obvious way to fix it for now, just flag the error in the code and add an "expected failure" kind of test.
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
Tests the behaviour of filelog w.r.t. data starting with '\1\n'
|
|
"""
|
|
from mercurial import ui, hg
|
|
from mercurial.node import nullid, hex
|
|
|
|
myui = ui.ui()
|
|
repo = hg.repository(myui, path='.', create=True)
|
|
|
|
fl = repo.file('foobar')
|
|
|
|
def addrev(text, renamed=False):
|
|
if renamed:
|
|
# data doesnt matter. Just make sure filelog.renamed() returns True
|
|
meta = dict(copyrev=hex(nullid), copy='bar')
|
|
else:
|
|
meta = {}
|
|
|
|
t = repo.transaction('commit')
|
|
try:
|
|
node = fl.add(text, meta, t, 0, nullid, nullid)
|
|
return node
|
|
finally:
|
|
t.close()
|
|
|
|
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.'
|