annotate tests/test-check-interfaces.py @ 39538:154e4f84b51c

treemanifest: use visitchildrenset when filtering a manifest to a matcher Differential Revision: https://phab.mercurial-scm.org/D4370
author Kyle Lippincott <spectral@google.com>
date Thu, 23 Aug 2018 00:44:10 -0700
parents 7f5e6d3e9032
children bfeab472e3c0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33828
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
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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)
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
16
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
17 from mercurial.thirdparty.zope import (
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
18 interface as zi,
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
19 )
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
20 from mercurial.thirdparty.zope.interface import (
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
21 verify as ziverify,
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
22 )
33828
b70029f355a3 tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
23 from mercurial import (
39258
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
24 changegroup,
34314
afcbc6f64d27 tests: add interface checks for bundle, statichttp, and union peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33828
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,
33828
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,
38532
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
29 manifest,
37914
39c17718f311 tests: make test-check-interfaces.py work on Python 3
Augie Fackler <augie@google.com>
parents: 37814
diff changeset
30 pycompat,
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
31 repository,
39259
b41d023a412a repository: establish API for emitting revision deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39258
diff changeset
32 revlog,
33828
b70029f355a3 tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
33 sshpeer,
34314
afcbc6f64d27 tests: add interface checks for bundle, statichttp, and union peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33828
diff changeset
34 statichttprepo,
33828
b70029f355a3 tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
35 ui as uimod,
34314
afcbc6f64d27 tests: add interface checks for bundle, statichttp, and union peers
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33828
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: 37183
diff changeset
38 wireprotoserver,
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
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,
33828
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
37914
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__), '..')))
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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):
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
48 """Verify an object with a zope interface."""
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
49 ifaces = zi.providedBy(o)
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
50 if not ifaces:
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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: 37009
diff changeset
52 return
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
53
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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: 37009
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: 37009
diff changeset
56 for iface in ifaces:
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
57 ziverify.verifyObject(iface, o)
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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: 37009
diff changeset
63 # aren't declared as part of interfaces.
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
64 allowed = set()
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
65 for iface in ifaces:
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
66 allowed |= set(iface.names(all=True))
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
67
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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: 37009
diff changeset
69
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
70 for attr in sorted(public - allowed):
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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: 37009
diff changeset
72 o.__class__.__name__, attr))
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
73
33828
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
37009
8e89c2bec1f7 httppeer: refactor how httppeer is created (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36401
diff changeset
83 class dummyopener(object):
8e89c2bec1f7 httppeer: refactor how httppeer is created (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36401
diff changeset
84 handlers = []
8e89c2bec1f7 httppeer: refactor how httppeer is created (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36401
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.
33828
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)
33828
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
36401
11ba1a96f946 sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36017
diff changeset
96 class dummypipe(object):
11ba1a96f946 sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36017
diff changeset
97 def close(self):
11ba1a96f946 sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36017
diff changeset
98 pass
11ba1a96f946 sshpeer: defer pipe buffering and stderr sidechannel binding
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36017
diff changeset
99
33828
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()
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
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: 37009
diff changeset
103 ui.setconfig('experimental', 'evolution.createmarkers', True)
33828
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)
37914
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)
37914
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)
37914
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()))
33828
b70029f355a3 tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
144
37183
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
145 ziverify.verifyClass(repository.completelocalrepository,
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
146 localrepo.localrepository)
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
147 repo = localrepo.localrepository(ui, rootdir)
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
148 checkzobject(repo)
0dfb5672f015 repository: define interface for local repositories
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37009
diff changeset
149
37296
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
150 ziverify.verifyClass(wireprototypes.baseprotocolhandler,
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
151 wireprotoserver.sshv1protocolhandler)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
152 ziverify.verifyClass(wireprototypes.baseprotocolhandler,
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
153 wireprotoserver.sshv2protocolhandler)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
154 ziverify.verifyClass(wireprototypes.baseprotocolhandler,
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
155 wireprotoserver.httpv1protocolhandler)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
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: 37183
diff changeset
158
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
159 sshv1 = wireprotoserver.sshv1protocolhandler(None, None, None)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
160 checkzobject(sshv1)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
161 sshv2 = wireprotoserver.sshv2protocolhandler(None, None, None)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
162 checkzobject(sshv2)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
163
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
diff changeset
164 httpv1 = wireprotoserver.httpv1protocolhandler(None, None, None)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
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: 37183
diff changeset
167 checkzobject(httpv2)
78103e4138b1 wireproto: port protocol handler to zope.interface
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37183
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)
38532
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
170 ziverify.verifyClass(repository.imanifestdict, manifest.manifestdict)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
171 ziverify.verifyClass(repository.imanifestrevisionstored,
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
172 manifest.manifestctx)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
173 ziverify.verifyClass(repository.imanifestrevisionwritable,
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
174 manifest.memmanifestctx)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
175 ziverify.verifyClass(repository.imanifestrevisionstored,
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
176 manifest.treemanifestctx)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
177 ziverify.verifyClass(repository.imanifestrevisionwritable,
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
178 manifest.memtreemanifestctx)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
179 ziverify.verifyClass(repository.imanifestlog, manifest.manifestlog)
39341
7f5e6d3e9032 manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39259
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
37914
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
38532
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
186 # Conforms to imanifestlog.
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
187 ml = manifest.manifestlog(vfs, repo)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
188 checkzobject(ml)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
189 checkzobject(repo.manifestlog)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
190
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
191 # Conforms to imanifestrevision.
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
192 mctx = ml[repo[0].manifestnode()]
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
193 checkzobject(mctx)
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
194
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
195 # Conforms to imanifestrevisionwritable.
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
196 checkzobject(mctx.new())
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
197 checkzobject(mctx.copy())
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
198
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
199 # Conforms to imanifestdict.
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
200 checkzobject(mctx.read())
c82ea938efbb repository: define manifest interfaces
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37914
diff changeset
201
39341
7f5e6d3e9032 manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39259
diff changeset
202 mrl = manifest.manifestrevlog(vfs)
7f5e6d3e9032 manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39259
diff changeset
203 checkzobject(mrl)
7f5e6d3e9032 manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39259
diff changeset
204
39258
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
205 ziverify.verifyClass(repository.irevisiondelta,
39259
b41d023a412a repository: establish API for emitting revision deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39258
diff changeset
206 revlog.revlogrevisiondelta)
39258
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
207 ziverify.verifyClass(repository.irevisiondeltarequest,
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
208 changegroup.revisiondeltarequest)
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
209
39259
b41d023a412a repository: establish API for emitting revision deltas
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39258
diff changeset
210 rd = revlog.revlogrevisiondelta(
39258
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
211 node=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
212 p1node=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
213 p2node=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
214 basenode=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
215 linknode=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
216 flags=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
217 baserevisionsize=None,
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
218 revision=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
219 delta=None)
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
220 checkzobject(rd)
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
221
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
222 rdr = changegroup.revisiondeltarequest(
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
223 node=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
224 linknode=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
225 p1node=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
226 p2node=b'',
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
227 basenode=b'')
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
228 checkzobject(rdr)
b518d495a560 repository: formalize interfaces for revision deltas and requests
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38532
diff changeset
229
33828
b70029f355a3 tests: verify that peer instances only expose interface members
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
230 main()