Mercurial > hg
comparison tests/test-check-interfaces.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | d459cd8ea42d |
children | c86256bd4eb8 |
comparison
equal
deleted
inserted
replaced
43075:57875cf423c9 | 43076:2372284d9457 |
---|---|
1 # Test that certain objects conform to well-defined interfaces. | 1 # Test that certain objects conform to well-defined interfaces. |
2 | 2 |
3 from __future__ import absolute_import, print_function | 3 from __future__ import absolute_import, print_function |
4 | 4 |
5 from mercurial import encoding | 5 from mercurial import encoding |
6 | |
6 encoding.environ[b'HGREALINTERFACES'] = b'1' | 7 encoding.environ[b'HGREALINTERFACES'] = b'1' |
7 | 8 |
8 import os | 9 import os |
9 import subprocess | 10 import subprocess |
10 import sys | 11 import sys |
11 | 12 |
12 # Only run if tests are run in a repo | 13 # Only run if tests are run in a repo |
13 if subprocess.call(['python', '%s/hghave' % os.environ['TESTDIR'], | 14 if subprocess.call( |
14 'test-repo']): | 15 ['python', '%s/hghave' % os.environ['TESTDIR'], 'test-repo'] |
16 ): | |
15 sys.exit(80) | 17 sys.exit(80) |
16 | 18 |
17 from mercurial.interfaces import ( | 19 from mercurial.interfaces import ( |
18 dirstate as intdirstate, | 20 dirstate as intdirstate, |
19 repository, | 21 repository, |
20 ) | 22 ) |
21 from mercurial.thirdparty.zope import ( | 23 from mercurial.thirdparty.zope import interface as zi |
22 interface as zi, | 24 from mercurial.thirdparty.zope.interface import verify as ziverify |
23 ) | |
24 from mercurial.thirdparty.zope.interface import ( | |
25 verify as ziverify, | |
26 ) | |
27 from mercurial import ( | 25 from mercurial import ( |
28 bundlerepo, | 26 bundlerepo, |
29 dirstate, | 27 dirstate, |
30 filelog, | 28 filelog, |
31 httppeer, | 29 httppeer, |
47 testdir = os.path.dirname(__file__) | 45 testdir = os.path.dirname(__file__) |
48 rootdir = pycompat.fsencode(os.path.normpath(os.path.join(testdir, '..'))) | 46 rootdir = pycompat.fsencode(os.path.normpath(os.path.join(testdir, '..'))) |
49 | 47 |
50 sys.path[0:0] = [testdir] | 48 sys.path[0:0] = [testdir] |
51 import simplestorerepo | 49 import simplestorerepo |
50 | |
52 del sys.path[0] | 51 del sys.path[0] |
52 | |
53 | 53 |
54 def checkzobject(o, allowextra=False): | 54 def checkzobject(o, allowextra=False): |
55 """Verify an object with a zope interface.""" | 55 """Verify an object with a zope interface.""" |
56 ifaces = zi.providedBy(o) | 56 ifaces = zi.providedBy(o) |
57 if not ifaces: | 57 if not ifaces: |
73 allowed |= set(iface.names(all=True)) | 73 allowed |= set(iface.names(all=True)) |
74 | 74 |
75 public = {a for a in dir(o) if not a.startswith('_')} | 75 public = {a for a in dir(o) if not a.startswith('_')} |
76 | 76 |
77 for attr in sorted(public - allowed): | 77 for attr in sorted(public - allowed): |
78 print('public attribute not declared in interfaces: %s.%s' % ( | 78 print( |
79 o.__class__.__name__, attr)) | 79 'public attribute not declared in interfaces: %s.%s' |
80 % (o.__class__.__name__, attr) | |
81 ) | |
82 | |
80 | 83 |
81 # Facilitates testing localpeer. | 84 # Facilitates testing localpeer. |
82 class dummyrepo(object): | 85 class dummyrepo(object): |
83 def __init__(self): | 86 def __init__(self): |
84 self.ui = uimod.ui() | 87 self.ui = uimod.ui() |
88 | |
85 def filtered(self, name): | 89 def filtered(self, name): |
86 pass | 90 pass |
91 | |
87 def _restrictcapabilities(self, caps): | 92 def _restrictcapabilities(self, caps): |
88 pass | 93 pass |
94 | |
89 | 95 |
90 class dummyopener(object): | 96 class dummyopener(object): |
91 handlers = [] | 97 handlers = [] |
98 | |
92 | 99 |
93 # Facilitates testing sshpeer without requiring a server. | 100 # Facilitates testing sshpeer without requiring a server. |
94 class badpeer(httppeer.httppeer): | 101 class badpeer(httppeer.httppeer): |
95 def __init__(self): | 102 def __init__(self): |
96 super(badpeer, self).__init__(None, None, None, dummyopener(), None, | 103 super(badpeer, self).__init__( |
97 None) | 104 None, None, None, dummyopener(), None, None |
105 ) | |
98 self.badattribute = True | 106 self.badattribute = True |
99 | 107 |
100 def badmethod(self): | 108 def badmethod(self): |
101 pass | 109 pass |
110 | |
102 | 111 |
103 class dummypipe(object): | 112 class dummypipe(object): |
104 def close(self): | 113 def close(self): |
105 pass | 114 pass |
115 | |
106 | 116 |
107 def main(): | 117 def main(): |
108 ui = uimod.ui() | 118 ui = uimod.ui() |
109 # Needed so we can open a local repo with obsstore without a warning. | 119 # Needed so we can open a local repo with obsstore without a warning. |
110 ui.setconfig(b'experimental', b'evolution.createmarkers', True) | 120 ui.setconfig(b'experimental', b'evolution.createmarkers', True) |
115 checkzobject(httppeer.httppeer(None, None, None, dummyopener(), None, None)) | 125 checkzobject(httppeer.httppeer(None, None, None, dummyopener(), None, None)) |
116 | 126 |
117 ziverify.verifyClass(repository.ipeerv2, httppeer.httpv2peer) | 127 ziverify.verifyClass(repository.ipeerv2, httppeer.httpv2peer) |
118 checkzobject(httppeer.httpv2peer(None, b'', b'', None, None, None)) | 128 checkzobject(httppeer.httpv2peer(None, b'', b'', None, None, None)) |
119 | 129 |
120 ziverify.verifyClass(repository.ipeerbase, | 130 ziverify.verifyClass(repository.ipeerbase, localrepo.localpeer) |
121 localrepo.localpeer) | |
122 checkzobject(localrepo.localpeer(dummyrepo())) | 131 checkzobject(localrepo.localpeer(dummyrepo())) |
123 | 132 |
124 ziverify.verifyClass(repository.ipeercommandexecutor, | 133 ziverify.verifyClass( |
125 localrepo.localcommandexecutor) | 134 repository.ipeercommandexecutor, localrepo.localcommandexecutor |
135 ) | |
126 checkzobject(localrepo.localcommandexecutor(None)) | 136 checkzobject(localrepo.localcommandexecutor(None)) |
127 | 137 |
128 ziverify.verifyClass(repository.ipeercommandexecutor, | 138 ziverify.verifyClass( |
129 wireprotov1peer.peerexecutor) | 139 repository.ipeercommandexecutor, wireprotov1peer.peerexecutor |
140 ) | |
130 checkzobject(wireprotov1peer.peerexecutor(None)) | 141 checkzobject(wireprotov1peer.peerexecutor(None)) |
131 | 142 |
132 ziverify.verifyClass(repository.ipeerbase, sshpeer.sshv1peer) | 143 ziverify.verifyClass(repository.ipeerbase, sshpeer.sshv1peer) |
133 checkzobject(sshpeer.sshv1peer(ui, b'ssh://localhost/foo', b'', dummypipe(), | 144 checkzobject( |
134 dummypipe(), None, None)) | 145 sshpeer.sshv1peer( |
146 ui, | |
147 b'ssh://localhost/foo', | |
148 b'', | |
149 dummypipe(), | |
150 dummypipe(), | |
151 None, | |
152 None, | |
153 ) | |
154 ) | |
135 | 155 |
136 ziverify.verifyClass(repository.ipeerbase, sshpeer.sshv2peer) | 156 ziverify.verifyClass(repository.ipeerbase, sshpeer.sshv2peer) |
137 checkzobject(sshpeer.sshv2peer(ui, b'ssh://localhost/foo', b'', dummypipe(), | 157 checkzobject( |
138 dummypipe(), None, None)) | 158 sshpeer.sshv2peer( |
159 ui, | |
160 b'ssh://localhost/foo', | |
161 b'', | |
162 dummypipe(), | |
163 dummypipe(), | |
164 None, | |
165 None, | |
166 ) | |
167 ) | |
139 | 168 |
140 ziverify.verifyClass(repository.ipeerbase, bundlerepo.bundlepeer) | 169 ziverify.verifyClass(repository.ipeerbase, bundlerepo.bundlepeer) |
141 checkzobject(bundlerepo.bundlepeer(dummyrepo())) | 170 checkzobject(bundlerepo.bundlepeer(dummyrepo())) |
142 | 171 |
143 ziverify.verifyClass(repository.ipeerbase, statichttprepo.statichttppeer) | 172 ziverify.verifyClass(repository.ipeerbase, statichttprepo.statichttppeer) |
144 checkzobject(statichttprepo.statichttppeer(dummyrepo())) | 173 checkzobject(statichttprepo.statichttppeer(dummyrepo())) |
145 | 174 |
146 ziverify.verifyClass(repository.ipeerbase, unionrepo.unionpeer) | 175 ziverify.verifyClass(repository.ipeerbase, unionrepo.unionpeer) |
147 checkzobject(unionrepo.unionpeer(dummyrepo())) | 176 checkzobject(unionrepo.unionpeer(dummyrepo())) |
148 | 177 |
149 ziverify.verifyClass(repository.ilocalrepositorymain, | 178 ziverify.verifyClass( |
150 localrepo.localrepository) | 179 repository.ilocalrepositorymain, localrepo.localrepository |
151 ziverify.verifyClass(repository.ilocalrepositoryfilestorage, | 180 ) |
152 localrepo.revlogfilestorage) | 181 ziverify.verifyClass( |
182 repository.ilocalrepositoryfilestorage, localrepo.revlogfilestorage | |
183 ) | |
153 repo = localrepo.makelocalrepository(ui, rootdir) | 184 repo = localrepo.makelocalrepository(ui, rootdir) |
154 checkzobject(repo) | 185 checkzobject(repo) |
155 | 186 |
156 ziverify.verifyClass(wireprototypes.baseprotocolhandler, | 187 ziverify.verifyClass( |
157 wireprotoserver.sshv1protocolhandler) | 188 wireprototypes.baseprotocolhandler, wireprotoserver.sshv1protocolhandler |
158 ziverify.verifyClass(wireprototypes.baseprotocolhandler, | 189 ) |
159 wireprotoserver.sshv2protocolhandler) | 190 ziverify.verifyClass( |
160 ziverify.verifyClass(wireprototypes.baseprotocolhandler, | 191 wireprototypes.baseprotocolhandler, wireprotoserver.sshv2protocolhandler |
161 wireprotoserver.httpv1protocolhandler) | 192 ) |
162 ziverify.verifyClass(wireprototypes.baseprotocolhandler, | 193 ziverify.verifyClass( |
163 wireprotov2server.httpv2protocolhandler) | 194 wireprototypes.baseprotocolhandler, |
195 wireprotoserver.httpv1protocolhandler, | |
196 ) | |
197 ziverify.verifyClass( | |
198 wireprototypes.baseprotocolhandler, | |
199 wireprotov2server.httpv2protocolhandler, | |
200 ) | |
164 | 201 |
165 sshv1 = wireprotoserver.sshv1protocolhandler(None, None, None) | 202 sshv1 = wireprotoserver.sshv1protocolhandler(None, None, None) |
166 checkzobject(sshv1) | 203 checkzobject(sshv1) |
167 sshv2 = wireprotoserver.sshv2protocolhandler(None, None, None) | 204 sshv2 = wireprotoserver.sshv2protocolhandler(None, None, None) |
168 checkzobject(sshv2) | 205 checkzobject(sshv2) |
172 httpv2 = wireprotov2server.httpv2protocolhandler(None, None) | 209 httpv2 = wireprotov2server.httpv2protocolhandler(None, None) |
173 checkzobject(httpv2) | 210 checkzobject(httpv2) |
174 | 211 |
175 ziverify.verifyClass(repository.ifilestorage, filelog.filelog) | 212 ziverify.verifyClass(repository.ifilestorage, filelog.filelog) |
176 ziverify.verifyClass(repository.imanifestdict, manifest.manifestdict) | 213 ziverify.verifyClass(repository.imanifestdict, manifest.manifestdict) |
177 ziverify.verifyClass(repository.imanifestrevisionstored, | 214 ziverify.verifyClass( |
178 manifest.manifestctx) | 215 repository.imanifestrevisionstored, manifest.manifestctx |
179 ziverify.verifyClass(repository.imanifestrevisionwritable, | 216 ) |
180 manifest.memmanifestctx) | 217 ziverify.verifyClass( |
181 ziverify.verifyClass(repository.imanifestrevisionstored, | 218 repository.imanifestrevisionwritable, manifest.memmanifestctx |
182 manifest.treemanifestctx) | 219 ) |
183 ziverify.verifyClass(repository.imanifestrevisionwritable, | 220 ziverify.verifyClass( |
184 manifest.memtreemanifestctx) | 221 repository.imanifestrevisionstored, manifest.treemanifestctx |
222 ) | |
223 ziverify.verifyClass( | |
224 repository.imanifestrevisionwritable, manifest.memtreemanifestctx | |
225 ) | |
185 ziverify.verifyClass(repository.imanifestlog, manifest.manifestlog) | 226 ziverify.verifyClass(repository.imanifestlog, manifest.manifestlog) |
186 ziverify.verifyClass(repository.imanifeststorage, manifest.manifestrevlog) | 227 ziverify.verifyClass(repository.imanifeststorage, manifest.manifestrevlog) |
187 | 228 |
188 ziverify.verifyClass(repository.irevisiondelta, | 229 ziverify.verifyClass( |
189 simplestorerepo.simplestorerevisiondelta) | 230 repository.irevisiondelta, simplestorerepo.simplestorerevisiondelta |
231 ) | |
190 ziverify.verifyClass(repository.ifilestorage, simplestorerepo.filestorage) | 232 ziverify.verifyClass(repository.ifilestorage, simplestorerepo.filestorage) |
191 ziverify.verifyClass(repository.iverifyproblem, | 233 ziverify.verifyClass( |
192 simplestorerepo.simplefilestoreproblem) | 234 repository.iverifyproblem, simplestorerepo.simplefilestoreproblem |
235 ) | |
193 | 236 |
194 ziverify.verifyClass(intdirstate.idirstate, dirstate.dirstate) | 237 ziverify.verifyClass(intdirstate.idirstate, dirstate.dirstate) |
195 | 238 |
196 vfs = vfsmod.vfs(b'.') | 239 vfs = vfsmod.vfs(b'.') |
197 fl = filelog.filelog(vfs, b'dummy.i') | 240 fl = filelog.filelog(vfs, b'dummy.i') |
198 checkzobject(fl, allowextra=True) | 241 checkzobject(fl, allowextra=True) |
199 | 242 |
200 # Conforms to imanifestlog. | 243 # Conforms to imanifestlog. |
201 ml = manifest.manifestlog(vfs, repo, manifest.manifestrevlog(repo.svfs), | 244 ml = manifest.manifestlog( |
202 repo.narrowmatch()) | 245 vfs, repo, manifest.manifestrevlog(repo.svfs), repo.narrowmatch() |
246 ) | |
203 checkzobject(ml) | 247 checkzobject(ml) |
204 checkzobject(repo.manifestlog) | 248 checkzobject(repo.manifestlog) |
205 | 249 |
206 # Conforms to imanifestrevision. | 250 # Conforms to imanifestrevision. |
207 mctx = ml[repo[0].manifestnode()] | 251 mctx = ml[repo[0].manifestnode()] |
215 checkzobject(mctx.read()) | 259 checkzobject(mctx.read()) |
216 | 260 |
217 mrl = manifest.manifestrevlog(vfs) | 261 mrl = manifest.manifestrevlog(vfs) |
218 checkzobject(mrl) | 262 checkzobject(mrl) |
219 | 263 |
220 ziverify.verifyClass(repository.irevisiondelta, | 264 ziverify.verifyClass(repository.irevisiondelta, revlog.revlogrevisiondelta) |
221 revlog.revlogrevisiondelta) | |
222 | 265 |
223 rd = revlog.revlogrevisiondelta( | 266 rd = revlog.revlogrevisiondelta( |
224 node=b'', | 267 node=b'', |
225 p1node=b'', | 268 p1node=b'', |
226 p2node=b'', | 269 p2node=b'', |
227 basenode=b'', | 270 basenode=b'', |
228 linknode=b'', | 271 linknode=b'', |
229 flags=b'', | 272 flags=b'', |
230 baserevisionsize=None, | 273 baserevisionsize=None, |
231 revision=b'', | 274 revision=b'', |
232 delta=None) | 275 delta=None, |
276 ) | |
233 checkzobject(rd) | 277 checkzobject(rd) |
234 | 278 |
235 ziverify.verifyClass(repository.iverifyproblem, | 279 ziverify.verifyClass(repository.iverifyproblem, revlog.revlogproblem) |
236 revlog.revlogproblem) | |
237 checkzobject(revlog.revlogproblem()) | 280 checkzobject(revlog.revlogproblem()) |
238 | 281 |
282 | |
239 main() | 283 main() |