Skip to content

Commit 8c281ed

Browse files
zmwangxserhiy-storchaka
authored andcommitted
bpo-35308: Fix regression where BROWSER env var is not respected. (GH-10693)
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.
1 parent 5a8c240 commit 8c281ed

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

Lib/test/test_webbrowser.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,24 @@ def test_environment(self):
309309
webbrowser = support.import_fresh_module('webbrowser')
310310
webbrowser.get()
311311

312+
def test_environment_preferred(self):
313+
webbrowser = support.import_fresh_module('webbrowser')
314+
try:
315+
webbrowser.get()
316+
least_preferred_browser = webbrowser.get(webbrowser._tryorder[-1]).name
317+
except (webbrowser.Error, AttributeError, IndexError) as err:
318+
self.skipTest(str(err))
319+
320+
with support.EnvironmentVarGuard() as env:
321+
env["BROWSER"] = least_preferred_browser
322+
webbrowser = support.import_fresh_module('webbrowser')
323+
self.assertEqual(webbrowser.get().name, least_preferred_browser)
324+
325+
with support.EnvironmentVarGuard() as env:
326+
env["BROWSER"] = sys.executable
327+
webbrowser = support.import_fresh_module('webbrowser')
328+
self.assertEqual(webbrowser.get().name, sys.executable)
329+
312330

313331
if __name__=='__main__':
314332
unittest.main()

Lib/webbrowser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def open_new_tab(url):
8686
return open(url, 2)
8787

8888

89-
def _synthesize(browser, *, preferred=True):
89+
def _synthesize(browser, *, preferred=False):
9090
"""Attempt to synthesize a controller base on existing controllers.
9191
9292
This is useful to create a controller when a user specifies a path to
@@ -563,7 +563,7 @@ def register_standard_browsers():
563563
# and prepend to _tryorder
564564
for cmdline in userchoices:
565565
if cmdline != '':
566-
cmd = _synthesize(cmdline, preferred=False)
566+
cmd = _synthesize(cmdline, preferred=True)
567567
if cmd[1] is None:
568568
register(cmdline, None, GenericBrowser(cmdline), preferred=True)
569569

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix regression in ``webbrowser`` where default browsers may be preferred
2+
over browsers in the ``BROWSER`` environment variable.

0 commit comments

Comments
 (0)