diff --git a/Lib/test/test_webbrowser.py b/Lib/test/test_webbrowser.py index 0820b9123125a3..735a6ae4ad3295 100644 --- a/Lib/test/test_webbrowser.py +++ b/Lib/test/test_webbrowser.py @@ -3,6 +3,8 @@ import subprocess from unittest import mock from test import support +from test.support import script_helper +import textwrap URL = 'http://www.example.com' @@ -265,6 +267,23 @@ def test_register_default(self): def test_register_preferred(self): self._check_registration(preferred=True) + def test_environment_variable_BROWSER_is_respected(self): + script_helper.assert_python_ok("-c", textwrap.dedent(""" + import shutil, unittest + from test import support, test_webbrowser + + def mock_which(path): + return True + + class Test(test_webbrowser.ImportTest): + + def setUp(self): + super().setUp() + support.patch(self, shutil, 'which', mock_which) + + unittest.main() + """), BROWSER='test_browser') + class ImportTest(unittest.TestCase): def test_register(self): diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index 2a5729b446f0cc..b9a37d9e19fdf4 100755 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -86,7 +86,7 @@ def open_new_tab(url): return open(url, 2) -def _synthesize(browser, update_tryorder=1): +def _synthesize(browser, update_tryorder=True): """Attempt to synthesize a controller base on existing controllers. This is useful to create a controller when a user specifies a path to @@ -113,7 +113,7 @@ def _synthesize(browser, update_tryorder=1): controller = copy.copy(controller) controller.name = browser controller.basename = os.path.basename(browser) - register(browser, None, controller, update_tryorder) + register(browser, None, instance=controller, preferred=update_tryorder) return [None, controller] return [None, None] @@ -564,7 +564,7 @@ def register_standard_browsers(): # and prepend to _tryorder for cmdline in userchoices: if cmdline != '': - cmd = _synthesize(cmdline, -1) + cmd = _synthesize(cmdline, update_tryorder=False) if cmd[1] is None: register(cmdline, None, GenericBrowser(cmdline), preferred=True)