Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
00fa6c7
gh-137586: Add MacOSX browser class using /usr/bin/open, deprecate Ma…
secengjeff Mar 26, 2026
f697cd5
gh-137586: Add tests for MacOSX browser class and MacOSXOSAScript dep…
secengjeff Mar 26, 2026
7781033
gh-137586: Document MacOSXOSAScript deprecation in webbrowser docs
secengjeff Mar 26, 2026
6066221
gh-137586: Add NEWS entries for MacOSX webbrowser change
secengjeff Mar 26, 2026
d54293f
gh-137586: Fix NEWS entry class references with ! prefix to suppress …
secengjeff Mar 26, 2026
080197e
gh-137586: Fix MacOSXOSAScriptTest for MacOSX registration change
secengjeff Mar 26, 2026
fdd6649
gh-137586: Use bundle IDs in MacOSX to prevent file injection via OS …
secengjeff Mar 26, 2026
8e1eef4
gh-137586: Load AppKit before NSWorkspace lookup in _macos_default_br…
secengjeff Mar 26, 2026
e193626
gh-137586: Register chromium, opera, microsoft-edge in register_stand…
secengjeff Apr 6, 2026
98dd1d8
gh-137586: Fix Microsoft Edge bundle ID on macOS (com.microsoft.edgemac)
secengjeff Apr 6, 2026
bdfc2e6
gh-137586: Replace _macos_default_browser_bundle_id with plistlib to …
secengjeff Apr 6, 2026
614078f
gh-137586: Rename MacOSX to MacOS
secengjeff Apr 6, 2026
c77f4b8
gh-137586: Use frozendict for MacOS._BUNDLE_IDS
secengjeff Apr 6, 2026
c725927
gh-137586: Update webbrowser.rst for MacOS class, fix version directives
secengjeff Apr 6, 2026
1316dbf
gh-137586: Revert frozendict for MacOS._BUNDLE_IDS pending frozendict…
secengjeff Apr 6, 2026
612d276
gh-137586: Fix MacOSXOSAScript mangled to MacOSOSAScript in test rename
secengjeff Apr 6, 2026
386af23
Update Misc/NEWS.d/next/Library/2026-03-26-01-42-20.gh-issue-137586.K…
secengjeff Apr 23, 2026
e4e89f1
Update Misc/NEWS.d/next/Security/2026-03-26-01-42-15.gh-issue-137586.…
secengjeff Apr 23, 2026
b513903
Update Doc/library/webbrowser.rst
secengjeff Apr 23, 2026
aacbceb
Update Doc/library/webbrowser.rst
secengjeff Apr 23, 2026
a6d76d6
gh-137586: Fix MacOS plist fallback, builtins.open shadow, add Brave
secengjeff Apr 23, 2026
5a4fdad
Merge branch 'main' into gh-137586-macosx-open
secengjeff Apr 23, 2026
de9ec77
gh-137586: Address hugovk review comments
secengjeff Apr 23, 2026
6ddf67f
lazy import plistlib
gpshead Apr 23, 2026
f874d67
gh-137586: Address hugovk post-approval concerns
secengjeff Apr 23, 2026
3b390bb
gh-137586: Fix Sphinx ref.class warnings in whatsnew/3.15.rst
secengjeff Apr 23, 2026
21b5499
Merge branch 'main' into gh-137586-macosx-open
hugovk May 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
gh-137586: Add tests for MacOSX browser class and MacOSXOSAScript dep…
…recation

Add MacOSXTest covering default browser open, named browser open, and failure
case (non-zero returncode). Add MacOSXOSAScriptDeprecationTest verifying that
instantiating MacOSXOSAScript emits a DeprecationWarning. All tests mock
subprocess.run.
  • Loading branch information
secengjeff committed Mar 26, 2026
commit f697cd583cb4caa37404a58209cbe64b530482be
43 changes: 43 additions & 0 deletions Lib/test/test_webbrowser.py
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,49 @@ def close(self):
return None


@unittest.skipUnless(sys.platform == "darwin", "macOS specific test")
@requires_subprocess()
class MacOSXTest(unittest.TestCase):

def test_default_open(self):
browser = webbrowser.MacOSX('default')
with mock.patch('subprocess.run') as mock_run:
mock_run.return_value = mock.Mock(returncode=0)
result = browser.open(URL)
mock_run.assert_called_once_with(
['/usr/bin/open', URL],
stderr=subprocess.DEVNULL,
)
self.assertTrue(result)

def test_named_open(self):
browser = webbrowser.MacOSX('safari')
with mock.patch('subprocess.run') as mock_run:
mock_run.return_value = mock.Mock(returncode=0)
result = browser.open(URL)
mock_run.assert_called_once_with(
['/usr/bin/open', '-a', 'safari', URL],
stderr=subprocess.DEVNULL,
)
self.assertTrue(result)

def test_open_failure(self):
browser = webbrowser.MacOSX('default')
with mock.patch('subprocess.run') as mock_run:
mock_run.return_value = mock.Mock(returncode=1)
result = browser.open(URL)
self.assertFalse(result)


@unittest.skipUnless(sys.platform == "darwin", "macOS specific test")
@requires_subprocess()
class MacOSXOSAScriptDeprecationTest(unittest.TestCase):

def test_deprecation_warning(self):
with self.assertWarns(DeprecationWarning):
webbrowser.MacOSXOSAScript('default')


@unittest.skipUnless(sys.platform == "darwin", "macOS specific test")
@requires_subprocess()
class MacOSXOSAScriptTest(unittest.TestCase):
Expand Down