3
3
import sys
4
4
5
5
import os
6
- import pkg_resources
7
6
import shutil
8
7
import tempfile
9
8
import unittest
21
20
except ImportError :
22
21
import mock
23
22
23
+ if sys .version_info >= (3 , 8 ):
24
+ import importlib .metadata
25
+ else :
26
+ import pkg_resources
27
+
24
28
25
29
class TestParse (unittest .TestCase ):
26
30
def test_registry_repr (self ):
@@ -111,14 +115,25 @@ def test_protocols(self):
111
115
112
116
def test_registry_protocols (self ):
113
117
# Check registry.protocols list the names of all available extension
114
- extensions = [
115
- pkg_resources .EntryPoint ("proto1" , "mod1" ),
116
- pkg_resources .EntryPoint ("proto2" , "mod2" ),
117
- ]
118
- m = mock .MagicMock (return_value = extensions )
119
- with mock .patch .object (
120
- sys .modules ["pkg_resources" ], "iter_entry_points" , new = m
121
- ):
118
+ if sys .version_info >= (3 , 8 ):
119
+ extensions = (
120
+ importlib .metadata .EntryPoint ("proto1" , "mod1" , "fs.opener" ),
121
+ importlib .metadata .EntryPoint ("proto2" , "mod2" , "fs.opener" ),
122
+ )
123
+ if sys .version_info >= (3 , 10 ):
124
+ m = mock .MagicMock (return_value = extensions )
125
+ else :
126
+ m = mock .MagicMock (return_value = {"fs.opener" : extensions })
127
+ patch = mock .patch ("importlib.metadata.entry_points" , m )
128
+ else :
129
+ extensions = [
130
+ pkg_resources .EntryPoint ("proto1" , "mod1" ),
131
+ pkg_resources .EntryPoint ("proto2" , "mod2" ),
132
+ ]
133
+ m = mock .MagicMock (return_value = extensions )
134
+ patch = mock .patch ("pkg_resources.iter_entry_points" , m )
135
+
136
+ with patch :
122
137
self .assertIn ("proto1" , opener .registry .protocols )
123
138
self .assertIn ("proto2" , opener .registry .protocols )
124
139
@@ -129,11 +144,19 @@ def test_unknown_protocol(self):
129
144
def test_entry_point_load_error (self ):
130
145
131
146
entry_point = mock .MagicMock ()
147
+ entry_point .name = "test"
132
148
entry_point .load .side_effect = ValueError ("some error" )
133
149
134
- iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
135
-
136
- with mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points ):
150
+ if sys .version_info >= (3 , 8 ):
151
+ if sys .version_info >= (3 , 10 ):
152
+ entry_points = mock .MagicMock (return_value = tuple ([entry_point ]))
153
+ else :
154
+ entry_points = mock .MagicMock (return_value = {"fs.opener" : [entry_point ]})
155
+ patch = mock .patch ("importlib.metadata.entry_points" , entry_points )
156
+ else :
157
+ iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
158
+ patch = mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points )
159
+ with patch :
137
160
with self .assertRaises (errors .EntryPointError ) as ctx :
138
161
opener .open_fs ("test://" )
139
162
self .assertEqual (
@@ -145,10 +168,19 @@ class NotAnOpener(object):
145
168
pass
146
169
147
170
entry_point = mock .MagicMock ()
171
+ entry_point .name = "test"
148
172
entry_point .load = mock .MagicMock (return_value = NotAnOpener )
149
- iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
150
173
151
- with mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points ):
174
+ if sys .version_info >= (3 , 8 ):
175
+ if sys .version_info >= (3 , 10 ):
176
+ entry_points = mock .MagicMock (return_value = tuple ([entry_point ]))
177
+ else :
178
+ entry_points = mock .MagicMock (return_value = {"fs.opener" : [entry_point ]})
179
+ patch = mock .patch ("importlib.metadata.entry_points" , entry_points )
180
+ else :
181
+ iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
182
+ patch = mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points )
183
+ with patch :
152
184
with self .assertRaises (errors .EntryPointError ) as ctx :
153
185
opener .open_fs ("test://" )
154
186
self .assertEqual ("entry point did not return an opener" , str (ctx .exception ))
@@ -162,10 +194,20 @@ def open_fs(self, *args, **kwargs):
162
194
pass
163
195
164
196
entry_point = mock .MagicMock ()
197
+ entry_point .name = "test"
165
198
entry_point .load = mock .MagicMock (return_value = BadOpener )
166
- iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
167
199
168
- with mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points ):
200
+ if sys .version_info >= (3 , 8 ):
201
+ if sys .version_info >= (3 , 10 ):
202
+ entry_points = mock .MagicMock (return_value = tuple ([entry_point ]))
203
+ else :
204
+ entry_points = mock .MagicMock (return_value = {"fs.opener" : [entry_point ]})
205
+ patch = mock .patch ("importlib.metadata.entry_points" , entry_points )
206
+ else :
207
+ iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
208
+ patch = mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points )
209
+
210
+ with patch :
169
211
with self .assertRaises (errors .EntryPointError ) as ctx :
170
212
opener .open_fs ("test://" )
171
213
self .assertEqual (
0 commit comments