bpo-24241: Add dedicated webbrowser.register test case (#288) · python/cpython@56a8ecc

@@ -213,5 +213,58 @@ def test_open_new_tab(self):

213213

arguments=['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+216269

if __name__=='__main__':

217270

unittest.main()