[Lldb-commits] [lldb] [lldb][test] Add requireMinidumpSave test decorator (PR #233775)

via lldb-commits lldb-commits at lists.llvm.org
Tue Oct 20 03:26:53 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-lldb

Author: David Spickett (DavidSpickett)

<details>
<summary>Changes</summary>

So we don't have to remember to add all the supported architectures to new tests.

You can confirm the supported architectures for
saving specifically by looking at
ArchThreadContexts::prepareRegisterContext.
Only x86_64 and AArch64 are handled.

(I think we can read for other architectures,
but I haven't confirmed that)

TestMinidumpReloadCrash.py also checked for "arm64" and "arm64e". So I've included those in the require as well. This might result in more tests running
where they didn't before.

---
Full diff: https://github.com/llvm/llvm-project/pull/233775.diff


6 Files Affected:

- (modified) lldb/packages/Python/lldbsuite/test/decorators.py (+10) 
- (modified) lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py (+8-8) 
- (modified) lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py (+2-2) 
- (modified) lldb/test/API/functionalities/process_save_core_minidump_reload_crash/TestMinidumpReloadCrash.py (+1-2) 
- (modified) lldb/test/API/functionalities/process_save_core_minidump_size_of_image/TestMinidumpSizeOfImage.py (+1-1) 
- (modified) lldb/test/API/tools/lldb-dap/save-core/TestDAP_save_core.py (+1-1) 


``````````diff
diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py
index 4cad3500b7d839..f2831c47f206fe 100644
--- a/lldb/packages/Python/lldbsuite/test/decorators.py
+++ b/lldb/packages/Python/lldbsuite/test/decorators.py
@@ -1322,6 +1322,16 @@ def requireClang(func):
     )(func)
 
 
+def requireMinidumpSave(func):
+    """Mark the item as requiring the ability to save a Minidump file. Which
+    is not implemented for all architectures."""
+    arch = lldbplatformutil.getArchitecture()
+    return unittest.skipUnless(
+        arch in ["aarch64", "x86_64", "arm64", "arm64e"],
+        UnsupportedReason(f"Minidump saving is not implemented for {arch}"),
+    )(func)
+
+
 def skipIfTargetDoesNotSupportSharedLibraries():
     """Skip tests that require shared library (dylib/so) support."""
     platform = lldbplatformutil.getPlatform()
diff --git a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
index 431e4db9e9b706..f5f7ebc64252e6 100644
--- a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
+++ b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
@@ -134,7 +134,7 @@ def verify_core_file(
 
         self.dbg.DeleteTarget(target)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_save_linux_mini_dump(self):
         """Test that we can save a Linux mini dump."""
@@ -279,7 +279,7 @@ def test_save_linux_mini_dump(self):
             if os.path.isfile(core_sb_full):
                 os.unlink(core_sb_full)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     # We try to read Linux /proc files from the host not the remote:
     # https://github.com/llvm/llvm-project/issues/231472
@@ -342,7 +342,7 @@ def test_save_linux_mini_dump_thread_options(self):
             if os.path.isfile(thread_subset_dmp):
                 os.unlink(thread_subset_dmp)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_save_linux_mini_dump_default_options(self):
         """Test that we can save a Linux mini dump with default SBSaveCoreOptions"""
@@ -398,7 +398,7 @@ def test_save_linux_mini_dump_default_options(self):
             if os.path.isfile(default_value_file):
                 os.unlink(default_value_file)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_save_linux_minidump_one_region(self):
         """Test that we can save a Linux mini dump with one region in sbsavecore regions"""
@@ -461,7 +461,7 @@ def test_save_linux_minidump_one_region(self):
             if os.path.isfile(one_region_file):
                 os.unlink(one_region_file)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_save_minidump_custom_save_style(self):
         """Test that verifies a custom and unspecified save style fails for
@@ -531,7 +531,7 @@ def save_core_with_region(self, process, region_index):
             if os.path.isfile(custom_file):
                 os.unlink(custom_file)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_save_minidump_custom_save_style_duplicated_regions(self):
         """Test that verifies a custom and unspecified save style fails for
@@ -668,7 +668,7 @@ def minidump_deterministic_difference(self):
             self.assertTrue(self.dbg.DeleteTarget(target))
 
     @skipUnlessPlatform(["linux"])
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     # We find the variable but its value is 0.
     @expectedFailureAll(archs=["x86_64", "aarch64"])
     def test_minidump_saves_tls(self):
@@ -700,7 +700,7 @@ def test_minidump_saves_tls(self):
             if os.path.isfile(tls_file):
                 os.unlink(tls_file)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_invalid_custom_regions_not_included(self):
         options = lldb.SBSaveCoreOptions()
diff --git a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
index b59fd0391cb05f..7d01e9f2114456 100644
--- a/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
+++ b/lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump64b.py
@@ -72,7 +72,7 @@ def verify_minidump(
             if core_target is not None:
                 self.assertTrue(self.dbg.DeleteTarget(core_target))
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_minidump_save_style_full(self):
         """Test that a full minidump is the same byte for byte."""
@@ -87,7 +87,7 @@ def test_minidump_save_style_full(self):
             if os.path.isfile(minidump_path):
                 os.unlink(minidump_path)
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     def test_minidump_save_style_mixed_memory(self):
         """Test that a mixed memory minidump is the same byte for byte."""
diff --git a/lldb/test/API/functionalities/process_save_core_minidump_reload_crash/TestMinidumpReloadCrash.py b/lldb/test/API/functionalities/process_save_core_minidump_reload_crash/TestMinidumpReloadCrash.py
index 4f5e191186637b..5b2344ee559a31 100644
--- a/lldb/test/API/functionalities/process_save_core_minidump_reload_crash/TestMinidumpReloadCrash.py
+++ b/lldb/test/API/functionalities/process_save_core_minidump_reload_crash/TestMinidumpReloadCrash.py
@@ -9,8 +9,7 @@
 
 
 class MinidumpReloadCrashTestCase(TestBase):
-    # The minidump writer only emits a thread context for x86_64 and arm64.
-    @skipIf(archs=no_match(["x86_64", "arm64", "arm64e", "aarch64"]))
+    @requireMinidumpSave
     def test_reload_minidump_does_not_crash(self):
         self.build()
         target, process, thread, bkpt = lldbutil.run_to_name_breakpoint(self, "main")
diff --git a/lldb/test/API/functionalities/process_save_core_minidump_size_of_image/TestMinidumpSizeOfImage.py b/lldb/test/API/functionalities/process_save_core_minidump_size_of_image/TestMinidumpSizeOfImage.py
index d3074bef21633c..1abbbbe04e55c1 100644
--- a/lldb/test/API/functionalities/process_save_core_minidump_size_of_image/TestMinidumpSizeOfImage.py
+++ b/lldb/test/API/functionalities/process_save_core_minidump_size_of_image/TestMinidumpSizeOfImage.py
@@ -118,7 +118,7 @@ def get_expected_size(self, target, module):
 
         return total
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @skipUnlessPlatform(["linux"])
     # Building the shared library assumes we will run on the host.
     @skipIfRemote
diff --git a/lldb/test/API/tools/lldb-dap/save-core/TestDAP_save_core.py b/lldb/test/API/tools/lldb-dap/save-core/TestDAP_save_core.py
index 556b358b192fd8..90be15306ec92e 100644
--- a/lldb/test/API/tools/lldb-dap/save-core/TestDAP_save_core.py
+++ b/lldb/test/API/tools/lldb-dap/save-core/TestDAP_save_core.py
@@ -13,7 +13,7 @@
 class TestDAP_save_core(DAPTestCaseBase):
     SHARED_BUILD_TESTCASE = False
 
-    @skipIf(archs=no_match(["x86_64", "aarch64"]))
+    @requireMinidumpSave
     @requireLinux
     def test_save_and_reload_core(self):
         """Save minidump cores in every supported `--style` from a single

``````````

</details>


https://github.com/llvm/llvm-project/pull/233775


More information about the lldb-commits mailing list