bpo-24241: Add dedicated webbrowser.register test case (#288) · python/cpython@56a8ecc
@@ -213,5 +213,58 @@ def test_open_new_tab(self):
213213arguments=['openURL({},new-tab)'.format(URL)])
214214215215216+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+216269if __name__=='__main__':
217270unittest.main()