mirror of https://github.com/python/cpython
gh-87277: Don't look for X11 browsers on macOS in webbrowser (#24480)
The installation of XQuartz on macOS will unconditionally set the $DISPLAY variable. The X11 server will be launched when a program tries to access the display. This results in launching the X11 server when using the webbrowser module, even though X11 browsers won't be used in practice.
This commit is contained in:
parent
723f4d6698
commit
ca8b1d0958
|
@ -272,6 +272,17 @@ class BrowserRegistrationTest(unittest.TestCase):
|
|||
self._check_registration(preferred=True)
|
||||
|
||||
|
||||
@unittest.skipUnless(sys.platform == "darwin", "macOS specific test")
|
||||
def test_no_xdg_settings_on_macOS(self):
|
||||
# On macOS webbrowser should not use xdg-settings to
|
||||
# look for X11 based browsers (for those users with
|
||||
# XQuartz installed)
|
||||
with mock.patch("subprocess.check_output") as ck_o:
|
||||
webbrowser.register_standard_browsers()
|
||||
|
||||
ck_o.assert_not_called()
|
||||
|
||||
|
||||
class ImportTest(unittest.TestCase):
|
||||
def test_register(self):
|
||||
webbrowser = import_helper.import_fresh_module('webbrowser')
|
||||
|
|
|
@ -495,7 +495,12 @@ def register_standard_browsers():
|
|||
register("microsoft-edge", None, Edge("MicrosoftEdge.exe"))
|
||||
else:
|
||||
# Prefer X browsers if present
|
||||
if os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY"):
|
||||
#
|
||||
# NOTE: Do not check for X11 browser on macOS,
|
||||
# XQuartz installation sets a DISPLAY environment variable and will
|
||||
# autostart when someone tries to access the display. Mac users in
|
||||
# general don't need an X11 browser.
|
||||
if sys.platform != "darwin" and (os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY")):
|
||||
try:
|
||||
cmd = "xdg-settings get default-web-browser".split()
|
||||
raw_result = subprocess.check_output(cmd, stderr=subprocess.DEVNULL)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
webbrowser: Don't look for X11 browsers on macOS. Those are generally not
|
||||
used and probing for them can result in starting XQuartz even if it isn't
|
||||
used otherwise.
|
Loading…
Reference in New Issue