From 45f5609f2ed9e35ae2a109c1e8a7c085e0a78006 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Wed, 29 Jul 2026 19:37:01 +0100 Subject: [PATCH] qa: Enable `interface_gui.py` on macOS This is a follow-up to bitcoin/bitcoin#35551. --- test/functional/interface_gui.py | 8 +++----- test/functional/test_framework/test_node.py | 5 +++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/test/functional/interface_gui.py b/test/functional/interface_gui.py index 7f05d720291..7383bb650c2 100755 --- a/test/functional/interface_gui.py +++ b/test/functional/interface_gui.py @@ -21,11 +21,9 @@ class GuiTest(BitcoinTestFramework): self.skip_if_no_gui() # On Windows, bitcoin.exe exits immediately when launching bitcoin-gui.exe, # causing the test framework's process monitor to see a premature node exit. - # On macOS, bitcoin-qt's Cocoa code assumes NSApp is initialized, but the - # minimal Qt platform plugin skips that, causing crashes. - # Both issues are likely fixable. - if platform.system() in ("Windows", "Darwin"): - raise SkipTest("bitcoin-gui test not supported on Windows or macOS") + # This issue is likely fixable. + if platform.system() == "Windows": + raise SkipTest("bitcoin-gui test not supported on Windows") def setup_nodes(self): self.extra_init = [{"use_gui": True}] diff --git a/test/functional/test_framework/test_node.py b/test/functional/test_framework/test_node.py index de96cc60446..24c76564862 100755 --- a/test/functional/test_framework/test_node.py +++ b/test/functional/test_framework/test_node.py @@ -282,6 +282,11 @@ class TestNode(): subp_env = dict(os.environ, LIBC_FATAL_STDERR_="1") if self.use_gui: subp_env.setdefault("QT_QPA_PLATFORM", "minimal") + if platform.system() == "Darwin": + # QMacStyle assumes a Cocoa platform window, which the minimal platform + # does not provide. In particular, painting a QGroupBox can make Qt call + # addSubview: on an invalid native object (QTBUG-49686). + subp_env.setdefault("QT_STYLE_OVERRIDE", "fusion") subp_env.setdefault("LC_ALL", "nl_NL.UTF-8") # Set language to try to trigger translation bugs if sys.platform.startswith("linux") and "XDG_RUNTIME_DIR" not in subp_env: # Qt prints warnings to stderr when XDG_RUNTIME_DIR is unset or has wrong