From a7152731134531a224c037fe1badcaf43b097ab7 Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Thu, 29 May 2025 10:06:14 -0700 Subject: [PATCH 1/2] Allow wrapping test run in lldb --- spin/cmds/meson.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/spin/cmds/meson.py b/spin/cmds/meson.py index bb29e12..8d39915 100644 --- a/spin/cmds/meson.py +++ b/spin/cmds/meson.py @@ -483,6 +483,11 @@ def _get_configured_command(command_name): default="html", help=f"Format of the gcov report. Can be one of {', '.join(e.value for e in GcovReportFormat)}.", ) +@click.option( + "--lldb", + is_flag=True, + help="Run pytest via lldb.", +) @build_option @build_dir_option @click.pass_context @@ -496,6 +501,7 @@ def test( coverage=False, gcov=None, gcov_format=None, + lldb=False, build=None, build_dir=None, ): @@ -632,6 +638,14 @@ def test( else: cmd = ["pytest"] + if lldb: + cmd = [ + "lldb", + "-O", + "settings set target.process.follow-fork-mode child", + "--", + ] + cmd + install_dir = _get_install_dir(build_dir) if not os.path.exists(install_dir): os.mkdir(install_dir) From f793c1a29acfd3c0d2382328a57edd7b83487c7f Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Thu, 29 May 2025 10:15:30 -0700 Subject: [PATCH 2/2] Add gdb as test wrapper --- spin/cmds/meson.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spin/cmds/meson.py b/spin/cmds/meson.py index 8d39915..344a34c 100644 --- a/spin/cmds/meson.py +++ b/spin/cmds/meson.py @@ -488,6 +488,11 @@ def _get_configured_command(command_name): is_flag=True, help="Run pytest via lldb.", ) +@click.option( + "--gdb", + is_flag=True, + help="Run pytest via gdb.", +) @build_option @build_dir_option @click.pass_context @@ -502,6 +507,7 @@ def test( gcov=None, gcov_format=None, lldb=False, + gdb=False, build=None, build_dir=None, ): @@ -646,6 +652,9 @@ def test( "--", ] + cmd + if gdb: + cmd = ["gdb", "-ex", "set detach-on-fork on", "--args"] + cmd + install_dir = _get_install_dir(build_dir) if not os.path.exists(install_dir): os.mkdir(install_dir)