annotate tests/test-filelog.py @ 48670:6d2ddea0721a stable

stream-clone: filter possible missing requirements using all supported one The `supportedformat` requirements is missing some important requirements and it seems better to filter out with all requirements we know, not just an "arbitrary" subset. The `supportedformat` set is lacking some important requirements (for example `revlog-compression-zstd`). This is getting fixed on default (for Mercurial 6.1) However, fixing that in 6.1 means the stream requirements sent over the wire will contains more items. And if we don't apply this fix on older version, they might end up complaining about lacking support for feature they actually support for years. This patch does not fix the deeper problem (advertised stream requirement lacking some of them), but focus on the trivial part : Lets use the full set of supported requirement for looking for unsupported ones. This patch should be simple to backport to older version of Mercurial and packager should be encouraged to do so. This is a graft of d9017df70135 from default. Differential Revision: https://phab.mercurial-scm.org/D12091
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 24 Jan 2022 11:49:06 +0100
parents 23f5ed6dbcb1
children 6000f5b25c9b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47500
23f5ed6dbcb1 run-tests: stop writing a `python3` symlink pointing to python2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47012
diff changeset
1 #!/usr/bin/env python
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
2 """
26098
ce26928cbe41 spelling: behaviour -> behavior
timeless@mozdev.org
parents: 20684
diff changeset
3 Tests the behavior of filelog w.r.t. data starting with '\1\n'
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
4 """
28744
6537e14301ef py3: use print_function in test-filelog.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28743
diff changeset
5 from __future__ import absolute_import, print_function
29205
a0939666b836 py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents: 28805
diff changeset
6
47012
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 45830
diff changeset
7 from mercurial.node import hex
28743
83373fc2b287 py3: use absolute_import in test-filelog.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 26098
diff changeset
8 from mercurial import (
83373fc2b287 py3: use absolute_import in test-filelog.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 26098
diff changeset
9 hg,
28805
efc739551c17 test-filelog: alias ui as uimod
Yuya Nishihara <yuya@tcha.org>
parents: 28744
diff changeset
10 ui as uimod,
28743
83373fc2b287 py3: use absolute_import in test-filelog.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 26098
diff changeset
11 )
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
12
30559
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 29205
diff changeset
13 myui = uimod.ui.load()
37933
f71c97d9b97b tests: port test-filelog.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
14 repo = hg.repository(myui, path=b'.', create=True)
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
15
37933
f71c97d9b97b tests: port test-filelog.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
16 fl = repo.file(b'foobar')
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
17
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37933
diff changeset
18
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
19 def addrev(text, renamed=False):
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
20 if renamed:
17486
73e3e368bd42 spelling: doesn't/does not
timeless@mozdev.org
parents: 16498
diff changeset
21 # data doesn't matter. Just make sure filelog.renamed() returns True
47012
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 45830
diff changeset
22 meta = {b'copyrev': hex(repo.nullid), b'copy': b'bar'}
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
23 else:
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
24 meta = {}
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
25
15876
2de1244361aa tests: lock before creating transaction in test-filelog
Mads Kiilerich <mads@kiilerich.com>
parents: 11540
diff changeset
26 lock = t = None
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
27 try:
15876
2de1244361aa tests: lock before creating transaction in test-filelog
Mads Kiilerich <mads@kiilerich.com>
parents: 11540
diff changeset
28 lock = repo.lock()
37933
f71c97d9b97b tests: port test-filelog.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
29 t = repo.transaction(b'commit')
47012
d55b71393907 node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents: 45830
diff changeset
30 node = fl.add(text, meta, t, 0, repo.nullid, repo.nullid)
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
31 return node
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
32 finally:
15876
2de1244361aa tests: lock before creating transaction in test-filelog
Mads Kiilerich <mads@kiilerich.com>
parents: 11540
diff changeset
33 if t:
2de1244361aa tests: lock before creating transaction in test-filelog
Mads Kiilerich <mads@kiilerich.com>
parents: 11540
diff changeset
34 t.close()
2de1244361aa tests: lock before creating transaction in test-filelog
Mads Kiilerich <mads@kiilerich.com>
parents: 11540
diff changeset
35 if lock:
2de1244361aa tests: lock before creating transaction in test-filelog
Mads Kiilerich <mads@kiilerich.com>
parents: 11540
diff changeset
36 lock.release()
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
37
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37933
diff changeset
38
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
39 def error(text):
28744
6537e14301ef py3: use print_function in test-filelog.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28743
diff changeset
40 print('ERROR: ' + text)
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
41
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37933
diff changeset
42
37933
f71c97d9b97b tests: port test-filelog.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
43 textwith = b'\1\nfoo'
f71c97d9b97b tests: port test-filelog.py to Python 3
Augie Fackler <augie@google.com>
parents: 30559
diff changeset
44 without = b'foo'
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
45
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
46 node = addrev(textwith)
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
47 if not textwith == fl.read(node):
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
48 error('filelog.read for data starting with \\1\\n')
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
49 if fl.cmp(node, textwith) or not fl.cmp(node, without):
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
50 error('filelog.cmp for data starting with \\1\\n')
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
51 if fl.size(0) != len(textwith):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37933
diff changeset
52 error(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37933
diff changeset
53 'FIXME: This is a known failure of filelog.size for data starting '
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37933
diff changeset
54 'with \\1\\n'
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 37933
diff changeset
55 )
11540
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
56
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
57 node = addrev(textwith, renamed=True)
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
58 if not textwith == fl.read(node):
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
59 error('filelog.read for a renaming + data starting with \\1\\n')
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
60 if fl.cmp(node, textwith) or not fl.cmp(node, without):
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
61 error('filelog.cmp for a renaming + data starting with \\1\\n')
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
62 if fl.size(1) != len(textwith):
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
63 error('filelog.size for a renaming + data starting with \\1\\n')
2370e270a29a filelog: test behaviour for data starting with "\1\n"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
64
28744
6537e14301ef py3: use print_function in test-filelog.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 28743
diff changeset
65 print('OK.')