Skip to content

Commit 11def8b

Browse files
committed
gh-114452: Preserve spaces in synthesized browser paths
1 parent 6044c62 commit 11def8b

3 files changed

Lines changed: 18 additions & 4 deletions

File tree

‎Lib/test/test_webbrowser.py‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,13 +563,26 @@ def test_get(self):
563563
webbrowser.get('fakebrowser')
564564
self.assertIsNotNone(webbrowser._tryorder)
565565

566-
@unittest.skipIf(" " in sys.executable, "test assumes no space in path (GH-114452)")
567566
def test_synthesize(self):
568567
webbrowser = import_helper.import_fresh_module('webbrowser')
569568
name = os.path.basename(sys.executable).lower()
570569
webbrowser.register(name, None, webbrowser.GenericBrowser(name))
571570
webbrowser.get(sys.executable)
572571

572+
def test_synthesize_space_in_path(self):
573+
webbrowser = import_helper.import_fresh_module('webbrowser')
574+
name = os.path.basename(sys.executable)
575+
webbrowser.register(name, None, webbrowser.GenericBrowser(name))
576+
with os_helper.temp_dir() as directory:
577+
directory = os.path.join(directory, 'with spaces')
578+
os.mkdir(directory)
579+
path = os.path.join(directory, name)
580+
os_helper.create_empty_file(path)
581+
os.chmod(path, 0o755)
582+
controller = webbrowser.get(path)
583+
self.assertIsInstance(controller, webbrowser.GenericBrowser)
584+
self.assertEqual(controller.name, path)
585+
573586
@unittest.skipIf(
574587
is_apple_mobile,
575588
"Apple mobile doesn't allow modifying browser with environment"

‎Lib/webbrowser.py‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,9 @@ def _synthesize(browser, *, preferred=False):
124124
executable for the requested browser, return [None, None].
125125
126126
"""
127-
cmd = browser.split()[0]
128-
if not shutil.which(cmd):
127+
if not shutil.which(browser):
129128
return [None, None]
130-
name = os.path.basename(cmd)
129+
name = os.path.basename(browser)
131130
try:
132131
command = _browsers[name.lower()]
133132
except KeyError:
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix :mod:`webbrowser` failing to find a registered browser when its executable
2+
path contains spaces.

0 commit comments

Comments
 (0)