@@ -213,5 +213,58 @@ def test_open_new_tab(self):
213
213
arguments = ['openURL({},new-tab)' .format (URL )])
214
214
215
215
216
+ class BrowserRegistrationTest (unittest .TestCase ):
217
+
218
+ def setUp (self ):
219
+ # Ensure we don't alter the real registered browser details
220
+ self ._saved_tryorder = webbrowser ._tryorder
221
+ webbrowser ._tryorder = []
222
+ self ._saved_browsers = webbrowser ._browsers
223
+ webbrowser ._browsers = {}
224
+
225
+ def tearDown (self ):
226
+ webbrowser ._tryorder = self ._saved_tryorder
227
+ webbrowser ._browsers = self ._saved_browsers
228
+
229
+ def _check_registration (self , preferred ):
230
+ class ExampleBrowser :
231
+ pass
232
+
233
+ expected_tryorder = []
234
+ expected_browsers = {}
235
+
236
+ self .assertEqual (webbrowser ._tryorder , expected_tryorder )
237
+ self .assertEqual (webbrowser ._browsers , expected_browsers )
238
+
239
+ webbrowser .register ('Example1' , ExampleBrowser )
240
+ expected_tryorder = ['Example1' ]
241
+ expected_browsers ['example1' ] = [ExampleBrowser , None ]
242
+ self .assertEqual (webbrowser ._tryorder , expected_tryorder )
243
+ self .assertEqual (webbrowser ._browsers , expected_browsers )
244
+
245
+ instance = ExampleBrowser ()
246
+ if preferred is not None :
247
+ webbrowser .register ('example2' , ExampleBrowser , instance ,
248
+ preferred = preferred )
249
+ else :
250
+ webbrowser .register ('example2' , ExampleBrowser , instance )
251
+ if preferred :
252
+ expected_tryorder = ['example2' , 'Example1' ]
253
+ else :
254
+ expected_tryorder = ['Example1' , 'example2' ]
255
+ expected_browsers ['example2' ] = [ExampleBrowser , instance ]
256
+ self .assertEqual (webbrowser ._tryorder , expected_tryorder )
257
+ self .assertEqual (webbrowser ._browsers , expected_browsers )
258
+
259
+ def test_register (self ):
260
+ self ._check_registration (preferred = False )
261
+
262
+ def test_register_default (self ):
263
+ self ._check_registration (preferred = None )
264
+
265
+ def test_register_preferred (self ):
266
+ self ._check_registration (preferred = True )
267
+
268
+
216
269
if __name__ == '__main__' :
217
270
unittest .main ()
0 commit comments