|
1 #!/usr/bin/env python |
|
2 """ |
|
3 Tests the behaviour of filelog w.r.t. data starting with '\1\n' |
|
4 """ |
|
5 from mercurial import ui, hg |
|
6 from mercurial.node import nullid, hex |
|
7 |
|
8 myui = ui.ui() |
|
9 repo = hg.repository(myui, path='.', create=True) |
|
10 |
|
11 fl = repo.file('foobar') |
|
12 |
|
13 def addrev(text, renamed=False): |
|
14 if renamed: |
|
15 # data doesnt matter. Just make sure filelog.renamed() returns True |
|
16 meta = dict(copyrev=hex(nullid), copy='bar') |
|
17 else: |
|
18 meta = {} |
|
19 |
|
20 t = repo.transaction('commit') |
|
21 try: |
|
22 node = fl.add(text, meta, t, 0, nullid, nullid) |
|
23 return node |
|
24 finally: |
|
25 t.close() |
|
26 |
|
27 def error(text): |
|
28 print 'ERROR: ' + text |
|
29 |
|
30 textwith = '\1\nfoo' |
|
31 without = 'foo' |
|
32 |
|
33 node = addrev(textwith) |
|
34 if not textwith == fl.read(node): |
|
35 error('filelog.read for data starting with \\1\\n') |
|
36 if fl.cmp(node, textwith) or not fl.cmp(node, without): |
|
37 error('filelog.cmp for data starting with \\1\\n') |
|
38 if fl.size(0) != len(textwith): |
|
39 error('FIXME: This is a known failure of filelog.size for data starting ' |
|
40 'with \\1\\n') |
|
41 |
|
42 node = addrev(textwith, renamed=True) |
|
43 if not textwith == fl.read(node): |
|
44 error('filelog.read for a renaming + data starting with \\1\\n') |
|
45 if fl.cmp(node, textwith) or not fl.cmp(node, without): |
|
46 error('filelog.cmp for a renaming + data starting with \\1\\n') |
|
47 if fl.size(1) != len(textwith): |
|
48 error('filelog.size for a renaming + data starting with \\1\\n') |
|
49 |
|
50 print 'OK.' |