summaryrefslogtreecommitdiff
path: root/tests/test-filelog
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-filelog')
-rwxr-xr-xtests/test-filelog50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/test-filelog b/tests/test-filelog
new file mode 100755
index 0000000..923fe29
--- /dev/null
+++ b/tests/test-filelog
@@ -0,0 +1,50 @@
+#!/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.'