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