bpo-31014: Fix the webbrowser module. (GH-7267)
webbrowser._synthesize() called webbrowser.register() with outdated signature. Co-Authored-By: John Still <john@jmsdvl.com>
This commit is contained in:
parent
0830858aee
commit
25b804a9c2
|
@ -1,5 +1,7 @@
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import unittest
|
import unittest
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
import subprocess
|
import subprocess
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
from test import support
|
from test import support
|
||||||
|
@ -290,6 +292,23 @@ class ImportTest(unittest.TestCase):
|
||||||
webbrowser.get('fakebrowser')
|
webbrowser.get('fakebrowser')
|
||||||
self.assertIsNotNone(webbrowser._tryorder)
|
self.assertIsNotNone(webbrowser._tryorder)
|
||||||
|
|
||||||
|
def test_synthesize(self):
|
||||||
|
webbrowser = support.import_fresh_module('webbrowser')
|
||||||
|
name = os.path.basename(sys.executable).lower()
|
||||||
|
webbrowser.register(name, None, webbrowser.GenericBrowser(name))
|
||||||
|
webbrowser.get(sys.executable)
|
||||||
|
|
||||||
|
def test_environment(self):
|
||||||
|
webbrowser = support.import_fresh_module('webbrowser')
|
||||||
|
try:
|
||||||
|
browser = webbrowser.get().name
|
||||||
|
except (webbrowser.Error, AttributeError) as err:
|
||||||
|
self.skipTest(str(err))
|
||||||
|
with support.EnvironmentVarGuard() as env:
|
||||||
|
env["BROWSER"] = browser
|
||||||
|
webbrowser = support.import_fresh_module('webbrowser')
|
||||||
|
webbrowser.get()
|
||||||
|
|
||||||
|
|
||||||
if __name__=='__main__':
|
if __name__=='__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -86,7 +86,7 @@ def open_new_tab(url):
|
||||||
return open(url, 2)
|
return open(url, 2)
|
||||||
|
|
||||||
|
|
||||||
def _synthesize(browser, update_tryorder=1):
|
def _synthesize(browser, *, preferred=True):
|
||||||
"""Attempt to synthesize a controller base on existing controllers.
|
"""Attempt to synthesize a controller base on existing controllers.
|
||||||
|
|
||||||
This is useful to create a controller when a user specifies a path to
|
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 = copy.copy(controller)
|
||||||
controller.name = browser
|
controller.name = browser
|
||||||
controller.basename = os.path.basename(browser)
|
controller.basename = os.path.basename(browser)
|
||||||
register(browser, None, controller, update_tryorder)
|
register(browser, None, instance=controller, preferred=preferred)
|
||||||
return [None, controller]
|
return [None, controller]
|
||||||
return [None, None]
|
return [None, None]
|
||||||
|
|
||||||
|
@ -563,7 +563,7 @@ def register_standard_browsers():
|
||||||
# and prepend to _tryorder
|
# and prepend to _tryorder
|
||||||
for cmdline in userchoices:
|
for cmdline in userchoices:
|
||||||
if cmdline != '':
|
if cmdline != '':
|
||||||
cmd = _synthesize(cmdline, -1)
|
cmd = _synthesize(cmdline, preferred=False)
|
||||||
if cmd[1] is None:
|
if cmd[1] is None:
|
||||||
register(cmdline, None, GenericBrowser(cmdline), preferred=True)
|
register(cmdline, None, GenericBrowser(cmdline), preferred=True)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Fixed creating a controller for :mod:`webbrowser` when a user specifies a
|
||||||
|
path to an entry in the BROWSER environment variable. Based on patch by
|
||||||
|
John Still.
|
Loading…
Reference in New Issue