]> granicus.if.org Git - python/commitdiff
bpo-24241: Add dedicated webbrowser.register test case (#288)
authorNick Coghlan <ncoghlan@gmail.com>
Sat, 25 Feb 2017 08:14:07 +0000 (18:14 +1000)
committerGitHub <noreply@github.com>
Sat, 25 Feb 2017 08:14:07 +0000 (18:14 +1000)
Lib/test/test_webbrowser.py

index e46b6fb08938664d6ff2c3a326346cd4e5e2d12e..622c1cbfc93b710c83e5b604908b0d48e402ac63 100644 (file)
@@ -213,5 +213,58 @@ class ELinksCommandTest(CommandTestMixin, unittest.TestCase):
                    arguments=['openURL({},new-tab)'.format(URL)])
 
 
+class BrowserRegistrationTest(unittest.TestCase):
+
+    def setUp(self):
+        # Ensure we don't alter the real registered browser details
+        self._saved_tryorder = webbrowser._tryorder
+        webbrowser._tryorder = []
+        self._saved_browsers = webbrowser._browsers
+        webbrowser._browsers = {}
+
+    def tearDown(self):
+        webbrowser._tryorder = self._saved_tryorder
+        webbrowser._browsers = self._saved_browsers
+
+    def _check_registration(self, preferred):
+        class ExampleBrowser:
+            pass
+
+        expected_tryorder = []
+        expected_browsers = {}
+
+        self.assertEqual(webbrowser._tryorder, expected_tryorder)
+        self.assertEqual(webbrowser._browsers, expected_browsers)
+
+        webbrowser.register('Example1', ExampleBrowser)
+        expected_tryorder = ['Example1']
+        expected_browsers['example1'] = [ExampleBrowser, None]
+        self.assertEqual(webbrowser._tryorder, expected_tryorder)
+        self.assertEqual(webbrowser._browsers, expected_browsers)
+
+        instance = ExampleBrowser()
+        if preferred is not None:
+            webbrowser.register('example2', ExampleBrowser, instance,
+                                preferred=preferred)
+        else:
+            webbrowser.register('example2', ExampleBrowser, instance)
+        if preferred:
+            expected_tryorder = ['example2', 'Example1']
+        else:
+            expected_tryorder = ['Example1', 'example2']
+        expected_browsers['example2'] = [ExampleBrowser, instance]
+        self.assertEqual(webbrowser._tryorder, expected_tryorder)
+        self.assertEqual(webbrowser._browsers, expected_browsers)
+
+    def test_register(self):
+        self._check_registration(preferred=False)
+
+    def test_register_default(self):
+        self._check_registration(preferred=None)
+
+    def test_register_preferred(self):
+        self._check_registration(preferred=True)
+
+
 if __name__=='__main__':
     unittest.main()