]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-35308: Fix regression where BROWSER env var is not respected. (GH-10693)
authorZhiming Wang <i@zhimingwang.org>
Mon, 26 Nov 2018 21:29:45 +0000 (16:29 -0500)
committerSerhiy Storchaka <storchaka@gmail.com>
Mon, 26 Nov 2018 21:29:45 +0000 (23:29 +0200)
Regression introduced in e3ce695 and 25b804a, where the old parameter
update_tryorder to _synthesize was first ignored, then given the opposite
value in the attempt to fix bpo-31014.

Lib/test/test_webbrowser.py
Lib/webbrowser.py
Misc/NEWS.d/next/Library/2018-11-24-10-33-42.bpo-35308.9--2iy.rst [new file with mode: 0644]

index 71f2e27467eef0255cbf2ef7cb1a1fba874cc85f..519a9432abe012db09de76b70771595f1b258fce 100644 (file)
@@ -309,6 +309,24 @@ class ImportTest(unittest.TestCase):
             webbrowser = support.import_fresh_module('webbrowser')
             webbrowser.get()
 
+    def test_environment_preferred(self):
+        webbrowser = support.import_fresh_module('webbrowser')
+        try:
+            webbrowser.get()
+            least_preferred_browser = webbrowser.get(webbrowser._tryorder[-1]).name
+        except (webbrowser.Error, AttributeError, IndexError) as err:
+            self.skipTest(str(err))
+
+        with support.EnvironmentVarGuard() as env:
+            env["BROWSER"] = least_preferred_browser
+            webbrowser = support.import_fresh_module('webbrowser')
+            self.assertEqual(webbrowser.get().name, least_preferred_browser)
+
+        with support.EnvironmentVarGuard() as env:
+            env["BROWSER"] = sys.executable
+            webbrowser = support.import_fresh_module('webbrowser')
+            self.assertEqual(webbrowser.get().name, sys.executable)
+
 
 if __name__=='__main__':
     unittest.main()
index 1e27c83fd947f0e14d18bf2734f26011531772e6..82bff835fdd0be6419e646d6b223bd15ed13bc7a 100755 (executable)
@@ -86,7 +86,7 @@ def open_new_tab(url):
     return open(url, 2)
 
 
-def _synthesize(browser, *, preferred=True):
+def _synthesize(browser, *, preferred=False):
     """Attempt to synthesize a controller base on existing controllers.
 
     This is useful to create a controller when a user specifies a path to
@@ -563,7 +563,7 @@ def register_standard_browsers():
         # and prepend to _tryorder
         for cmdline in userchoices:
             if cmdline != '':
-                cmd = _synthesize(cmdline, preferred=False)
+                cmd = _synthesize(cmdline, preferred=True)
                 if cmd[1] is None:
                     register(cmdline, None, GenericBrowser(cmdline), preferred=True)
 
diff --git a/Misc/NEWS.d/next/Library/2018-11-24-10-33-42.bpo-35308.9--2iy.rst b/Misc/NEWS.d/next/Library/2018-11-24-10-33-42.bpo-35308.9--2iy.rst
new file mode 100644 (file)
index 0000000..a33fe2e
--- /dev/null
@@ -0,0 +1,2 @@
+Fix regression in ``webbrowser`` where default browsers may be preferred
+over browsers in the ``BROWSER`` environment variable.