Skip to content

Commit 56a8ecc

Browse files
authored
bpo-24241: Add dedicated webbrowser.register test case (#288)
1 parent e3ce695 commit 56a8ecc

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

Lib/test/test_webbrowser.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,5 +213,58 @@ def test_open_new_tab(self):
213213
arguments=['openURL({},new-tab)'.format(URL)])
214214

215215

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+
216269
if __name__=='__main__':
217270
unittest.main()

0 commit comments

Comments
 (0)