Mercurial > public > mercurial-scm > hg
annotate tests/test-check-interfaces.py @ 39314:7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Previously, manifestrevlog inherited revlog.revlog and therefore
exposed all its APIs. This inevitably resulted in consumers calling
low-level revlog APIs.
As part of abstracting storage, we want to formalize the interface
for manifest storage. The revlog API is much too large to define as
the interface.
Like we did for filelog, this commit divorces the manifest class
from revlog so that we can standardize on a smaller API surface.
The way I went about this commit was I broke the inheritance, ran
tests, and added proxies until all tests passed. Like filelog, there
are a handful of attributes that don't belong on the interface.
And like filelog, we'll tease these out in the future.
As part of this, we formalize an interface for manifest storage and
add checks that manifestrevlog conforms to the interface.
Adding proxies will introduce some overhead due to extra attribute
lookups and function calls. On the mozilla-unified repository:
$ hg verify
before: real 627.220 secs (user 525.870+0.000 sys 18.800+0.000)
after: real 628.930 secs (user 532.050+0.000 sys 18.320+0.000)
$ hg serve (for a clone)
before: user 223.580+0.000 sys 14.270+0.000
after: user 227.720+0.000 sys 13.920+0.000
$ hg clone
before: user 506.390+0.000 sys 29.720+0.000
after: user 513.080+0.000 sys 28.280+0.000
There appears to be some overhead here. But it appears to be 1-2%.
I think that is an appropriate price to pay for storage abstraction,
which will eventually let us have much nicer things. If the overhead
is noticed in other operations (whose CPU time isn't likely dwarfed by
fulltext resolution) or if we want to cut down on the overhead, we
could dynamically build up a type whose methods are effectively
aliased to a revlog instance's. I'm inclined to punt on that problem
for now. We may have to do it for the changelog. At which point it
could be implemented in a generic way and ported to filelog and
manifestrevlog easily enough I would think.
.. api:: manifest.manifestrevlog no longer inherits from revlog
The manifestrevlog class now wraps a revlog instance instead of
inheriting from revlog. Various attributes and methods on instances
are no longer available.
Differential Revision: https://phab.mercurial-scm.org/D4386
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 27 Aug 2018 10:15:15 -0700 |
parents | b41d023a412a |
children | bfeab472e3c0 |
rev | line source |
---|---|
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 # Test that certain objects conform to well-defined interfaces. |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 from __future__ import absolute_import, print_function |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 |
37810
856f381ad74b
interfaceutil: module to stub out zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
5 from mercurial import encoding |
856f381ad74b
interfaceutil: module to stub out zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
6 encoding.environ[b'HGREALINTERFACES'] = b'1' |
856f381ad74b
interfaceutil: module to stub out zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37635
diff
changeset
|
7 |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
8 import os |
37814
265c122b69aa
tests: mark test-check-interfaces.py as requiring a repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
37810
diff
changeset
|
9 import subprocess |
265c122b69aa
tests: mark test-check-interfaces.py as requiring a repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
37810
diff
changeset
|
10 import sys |
265c122b69aa
tests: mark test-check-interfaces.py as requiring a repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
37810
diff
changeset
|
11 |
265c122b69aa
tests: mark test-check-interfaces.py as requiring a repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
37810
diff
changeset
|
12 # Only run if tests are run in a repo |
265c122b69aa
tests: mark test-check-interfaces.py as requiring a repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
37810
diff
changeset
|
13 if subprocess.call(['python', '%s/hghave' % os.environ['TESTDIR'], |
265c122b69aa
tests: mark test-check-interfaces.py as requiring a repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
37810
diff
changeset
|
14 'test-repo']): |
265c122b69aa
tests: mark test-check-interfaces.py as requiring a repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
37810
diff
changeset
|
15 sys.exit(80) |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
16 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
17 from mercurial.thirdparty.zope import ( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
18 interface as zi, |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
19 ) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
20 from mercurial.thirdparty.zope.interface import ( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
21 verify as ziverify, |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
22 ) |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
23 from mercurial import ( |
39230
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
24 changegroup, |
34307
afcbc6f64d27
tests: add interface checks for bundle, statichttp, and union peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33807
diff
changeset
|
25 bundlerepo, |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
26 filelog, |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
27 httppeer, |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
28 localrepo, |
38530
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
29 manifest, |
37870
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
30 pycompat, |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
31 repository, |
39231
b41d023a412a
repository: establish API for emitting revision deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39230
diff
changeset
|
32 revlog, |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
33 sshpeer, |
34307
afcbc6f64d27
tests: add interface checks for bundle, statichttp, and union peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33807
diff
changeset
|
34 statichttprepo, |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
35 ui as uimod, |
34307
afcbc6f64d27
tests: add interface checks for bundle, statichttp, and union peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33807
diff
changeset
|
36 unionrepo, |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
37 vfs as vfsmod, |
37296
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
38 wireprotoserver, |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
39 wireprototypes, |
37630
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
40 wireprotov1peer, |
37545
93397c4633f6
wireproto: extract HTTP version 2 code to own module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37441
diff
changeset
|
41 wireprotov2server, |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
42 ) |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
43 |
37870
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
44 rootdir = pycompat.fsencode( |
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
45 os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))) |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
46 |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
47 def checkzobject(o, allowextra=False): |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
48 """Verify an object with a zope interface.""" |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
49 ifaces = zi.providedBy(o) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
50 if not ifaces: |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
51 print('%r does not provide any zope interfaces' % o) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
52 return |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
53 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
54 # Run zope.interface's built-in verification routine. This verifies that |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
55 # everything that is supposed to be present is present. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
56 for iface in ifaces: |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
57 ziverify.verifyObject(iface, o) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
58 |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
59 if allowextra: |
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
60 return |
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
61 |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
62 # Now verify that the object provides no extra public attributes that |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
63 # aren't declared as part of interfaces. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
64 allowed = set() |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
65 for iface in ifaces: |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
66 allowed |= set(iface.names(all=True)) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
67 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
68 public = {a for a in dir(o) if not a.startswith('_')} |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
69 |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
70 for attr in sorted(public - allowed): |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
71 print('public attribute not declared in interfaces: %s.%s' % ( |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
72 o.__class__.__name__, attr)) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
73 |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
74 # Facilitates testing localpeer. |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
75 class dummyrepo(object): |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
76 def __init__(self): |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
77 self.ui = uimod.ui() |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
78 def filtered(self, name): |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
79 pass |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
80 def _restrictcapabilities(self, caps): |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
81 pass |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
82 |
37006
8e89c2bec1f7
httppeer: refactor how httppeer is created (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36370
diff
changeset
|
83 class dummyopener(object): |
8e89c2bec1f7
httppeer: refactor how httppeer is created (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36370
diff
changeset
|
84 handlers = [] |
8e89c2bec1f7
httppeer: refactor how httppeer is created (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36370
diff
changeset
|
85 |
37552
8b8a845c85fc
httppeer: perform capabilities request in makepeer()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37547
diff
changeset
|
86 # Facilitates testing sshpeer without requiring a server. |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
87 class badpeer(httppeer.httppeer): |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
88 def __init__(self): |
37552
8b8a845c85fc
httppeer: perform capabilities request in makepeer()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37547
diff
changeset
|
89 super(badpeer, self).__init__(None, None, None, dummyopener(), None, |
8b8a845c85fc
httppeer: perform capabilities request in makepeer()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37547
diff
changeset
|
90 None) |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
91 self.badattribute = True |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
92 |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
93 def badmethod(self): |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
94 pass |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
95 |
36370
11ba1a96f946
sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35978
diff
changeset
|
96 class dummypipe(object): |
11ba1a96f946
sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35978
diff
changeset
|
97 def close(self): |
11ba1a96f946
sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35978
diff
changeset
|
98 pass |
11ba1a96f946
sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35978
diff
changeset
|
99 |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
100 def main(): |
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
101 ui = uimod.ui() |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
102 # Needed so we can open a local repo with obsstore without a warning. |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
103 ui.setconfig('experimental', 'evolution.createmarkers', True) |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
104 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
105 checkzobject(badpeer()) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
106 |
37635
cc8c06835097
wireproto: convert legacy commands to command executor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37630
diff
changeset
|
107 ziverify.verifyClass(repository.ipeerbase, httppeer.httppeer) |
37552
8b8a845c85fc
httppeer: perform capabilities request in makepeer()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37547
diff
changeset
|
108 checkzobject(httppeer.httppeer(None, None, None, dummyopener(), None, None)) |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
109 |
37609
01bfe5ad0c53
httppeer: implement ipeerconnection
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37552
diff
changeset
|
110 ziverify.verifyClass(repository.ipeerconnection, |
01bfe5ad0c53
httppeer: implement ipeerconnection
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37552
diff
changeset
|
111 httppeer.httpv2peer) |
37611
ae8730877371
httppeer: basic implementation of capabilities interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37609
diff
changeset
|
112 ziverify.verifyClass(repository.ipeercapabilities, |
ae8730877371
httppeer: basic implementation of capabilities interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37609
diff
changeset
|
113 httppeer.httpv2peer) |
37870
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
114 checkzobject(httppeer.httpv2peer(None, b'', b'', None, None, None)) |
37609
01bfe5ad0c53
httppeer: implement ipeerconnection
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37552
diff
changeset
|
115 |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
116 ziverify.verifyClass(repository.ipeerbase, |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
117 localrepo.localpeer) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
118 checkzobject(localrepo.localpeer(dummyrepo())) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
119 |
37630
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
120 ziverify.verifyClass(repository.ipeercommandexecutor, |
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
121 localrepo.localcommandexecutor) |
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
122 checkzobject(localrepo.localcommandexecutor(None)) |
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
123 |
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
124 ziverify.verifyClass(repository.ipeercommandexecutor, |
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
125 wireprotov1peer.peerexecutor) |
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
126 checkzobject(wireprotov1peer.peerexecutor(None)) |
e1b32dc4646c
wireproto: implement command executor interface for version 1 peers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37611
diff
changeset
|
127 |
37635
cc8c06835097
wireproto: convert legacy commands to command executor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37630
diff
changeset
|
128 ziverify.verifyClass(repository.ipeerbase, sshpeer.sshv1peer) |
37870
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
129 checkzobject(sshpeer.sshv1peer(ui, b'ssh://localhost/foo', b'', dummypipe(), |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
130 dummypipe(), None, None)) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
131 |
37635
cc8c06835097
wireproto: convert legacy commands to command executor
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37630
diff
changeset
|
132 ziverify.verifyClass(repository.ipeerbase, sshpeer.sshv2peer) |
37870
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
133 checkzobject(sshpeer.sshv2peer(ui, b'ssh://localhost/foo', b'', dummypipe(), |
37320
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
134 dummypipe(), None, None)) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
135 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
136 ziverify.verifyClass(repository.ipeerbase, bundlerepo.bundlepeer) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
137 checkzobject(bundlerepo.bundlepeer(dummyrepo())) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
138 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
139 ziverify.verifyClass(repository.ipeerbase, statichttprepo.statichttppeer) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
140 checkzobject(statichttprepo.statichttppeer(dummyrepo())) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
141 |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
142 ziverify.verifyClass(repository.ipeerbase, unionrepo.unionpeer) |
39f7d4ee8bcd
repository: port peer interfaces to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37296
diff
changeset
|
143 checkzobject(unionrepo.unionpeer(dummyrepo())) |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
144 |
37181
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
145 ziverify.verifyClass(repository.completelocalrepository, |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
146 localrepo.localrepository) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
147 repo = localrepo.localrepository(ui, rootdir) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
148 checkzobject(repo) |
0dfb5672f015
repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37006
diff
changeset
|
149 |
37296
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
150 ziverify.verifyClass(wireprototypes.baseprotocolhandler, |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
151 wireprotoserver.sshv1protocolhandler) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
152 ziverify.verifyClass(wireprototypes.baseprotocolhandler, |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
153 wireprotoserver.sshv2protocolhandler) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
154 ziverify.verifyClass(wireprototypes.baseprotocolhandler, |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
155 wireprotoserver.httpv1protocolhandler) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
156 ziverify.verifyClass(wireprototypes.baseprotocolhandler, |
37545
93397c4633f6
wireproto: extract HTTP version 2 code to own module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37441
diff
changeset
|
157 wireprotov2server.httpv2protocolhandler) |
37296
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
158 |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
159 sshv1 = wireprotoserver.sshv1protocolhandler(None, None, None) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
160 checkzobject(sshv1) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
161 sshv2 = wireprotoserver.sshv2protocolhandler(None, None, None) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
162 checkzobject(sshv2) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
163 |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
164 httpv1 = wireprotoserver.httpv1protocolhandler(None, None, None) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
165 checkzobject(httpv1) |
37545
93397c4633f6
wireproto: extract HTTP version 2 code to own module
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37441
diff
changeset
|
166 httpv2 = wireprotov2server.httpv2protocolhandler(None, None) |
37296
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
167 checkzobject(httpv2) |
78103e4138b1
wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37181
diff
changeset
|
168 |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
169 ziverify.verifyClass(repository.ifilestorage, filelog.filelog) |
38530
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
170 ziverify.verifyClass(repository.imanifestdict, manifest.manifestdict) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
171 ziverify.verifyClass(repository.imanifestrevisionstored, |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
172 manifest.manifestctx) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
173 ziverify.verifyClass(repository.imanifestrevisionwritable, |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
174 manifest.memmanifestctx) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
175 ziverify.verifyClass(repository.imanifestrevisionstored, |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
176 manifest.treemanifestctx) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
177 ziverify.verifyClass(repository.imanifestrevisionwritable, |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
178 manifest.memtreemanifestctx) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
179 ziverify.verifyClass(repository.imanifestlog, manifest.manifestlog) |
39314
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
180 ziverify.verifyClass(repository.imanifeststorage, manifest.manifestrevlog) |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
181 |
37870
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
182 vfs = vfsmod.vfs(b'.') |
39c17718f311
tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents:
37814
diff
changeset
|
183 fl = filelog.filelog(vfs, b'dummy.i') |
37441
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
184 checkzobject(fl, allowextra=True) |
a3202fa83aff
filelog: declare that filelog implements a storage interface
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37320
diff
changeset
|
185 |
38530
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
186 # Conforms to imanifestlog. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
187 ml = manifest.manifestlog(vfs, repo) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
188 checkzobject(ml) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
189 checkzobject(repo.manifestlog) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
190 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
191 # Conforms to imanifestrevision. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
192 mctx = ml[repo[0].manifestnode()] |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
193 checkzobject(mctx) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
194 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
195 # Conforms to imanifestrevisionwritable. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
196 checkzobject(mctx.new()) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
197 checkzobject(mctx.copy()) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
198 |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
199 # Conforms to imanifestdict. |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
200 checkzobject(mctx.read()) |
c82ea938efbb
repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37870
diff
changeset
|
201 |
39314
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
202 mrl = manifest.manifestrevlog(vfs) |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
203 checkzobject(mrl) |
7f5e6d3e9032
manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39231
diff
changeset
|
204 |
39230
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
205 ziverify.verifyClass(repository.irevisiondelta, |
39231
b41d023a412a
repository: establish API for emitting revision deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39230
diff
changeset
|
206 revlog.revlogrevisiondelta) |
39230
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
207 ziverify.verifyClass(repository.irevisiondeltarequest, |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
208 changegroup.revisiondeltarequest) |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
209 |
39231
b41d023a412a
repository: establish API for emitting revision deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39230
diff
changeset
|
210 rd = revlog.revlogrevisiondelta( |
39230
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
211 node=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
212 p1node=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
213 p2node=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
214 basenode=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
215 linknode=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
216 flags=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
217 baserevisionsize=None, |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
218 revision=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
219 delta=None) |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
220 checkzobject(rd) |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
221 |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
222 rdr = changegroup.revisiondeltarequest( |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
223 node=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
224 linknode=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
225 p1node=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
226 p2node=b'', |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
227 basenode=b'') |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
228 checkzobject(rdr) |
b518d495a560
repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents:
38530
diff
changeset
|
229 |
33807
b70029f355a3
tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
230 main() |