[Lldb-commits] [lldb] [lldb][test] Remove duplicate testcase names in API test-suite (PR #97043)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Fri Jun 28 04:56:38 PDT 2024
https://github.com/Michael137 updated https://github.com/llvm/llvm-project/pull/97043
>From 0c1f5c2240c64cfd69afcf819c69cca1270e5d8a Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Fri, 28 Jun 2024 12:49:55 +0100
Subject: [PATCH 1/2] [lldb][test] Remove duplicate testcase names in API
test-suite
In one of my recent PRs I mistakenly had two test-cases with
the same name, preventing one of them to run. Since it's an
easy mistake to make (e.g., copy pasting existing test-cases),
I ran following sanity-check script over `lldb/test/API`, which
found couple of tests which were losing coverage because of
this (or in some cases simply had duplicate tests):
```
import ast
import sys
filename = sys.argv[1]
print(f'Checking {filename}...')
tree = ast.parse(open(filename, 'r').read())
for node in ast.walk(tree):
if not isinstance(node, ast.ClassDef):
continue
func_names = []
for child in ast.iter_child_nodes(node):
if isinstance(child, ast.FunctionDef):
func_names.append(child.name)
seen_func_names = set()
duplicate_func_names = []
for name in func_names:
if name in seen_func_names:
duplicate_func_names.append(name)
else:
seen_func_names.add(name)
if len(duplicate_func_names) != 0:
print(f'Multiple func names found:\n\t{duplicate_func_names}\n\tclass {node.name}\n\tfile: {filename}')
```
This patch fixes these cases.
---
.../log/invalid-args/TestInvalidArgsLog.py | 2 +-
.../backtrace/TestThreadBacktraceRepeat.py | 2 -
.../TestTraceStartStopMultipleThreads.py | 37 -------------------
.../completion/TestCompletion.py | 6 ---
.../gdb_remote_client/TestIOSSimulator.py | 2 +-
.../python_os_plugin/TestPythonOSPlugin.py | 2 +-
.../API/lang/cpp/diamond/TestCppDiamond.py | 2 +-
.../TestMembersAndLocalsWithSameName.py | 1 -
.../cxx-bridged-po/TestObjCXXBridgedPO.py | 2 +-
.../rust/enum-structs/TestRustEnumStructs.py | 2 +-
lldb/test/API/test_utils/TestDecorators.py | 4 +-
11 files changed, 8 insertions(+), 54 deletions(-)
diff --git a/lldb/test/API/commands/log/invalid-args/TestInvalidArgsLog.py b/lldb/test/API/commands/log/invalid-args/TestInvalidArgsLog.py
index 583c68d7bfacc..dbcd2d60d021a 100644
--- a/lldb/test/API/commands/log/invalid-args/TestInvalidArgsLog.py
+++ b/lldb/test/API/commands/log/invalid-args/TestInvalidArgsLog.py
@@ -25,7 +25,7 @@ def test_disable_empty(self):
)
@no_debug_info_test
- def test_enable_empty(self):
+ def test_enable_invalid_path(self):
invalid_path = os.path.join("this", "is", "not", "a", "valid", "path")
self.expect(
"log enable lldb all -f " + invalid_path,
diff --git a/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py b/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py
index 9678bd42999b3..571024417560f 100644
--- a/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py
+++ b/lldb/test/API/commands/thread/backtrace/TestThreadBacktraceRepeat.py
@@ -16,8 +16,6 @@ def test_thread_backtrace_one_thread(self):
"""Run a simplified version of the test that just hits one breakpoint and
doesn't care about synchronizing the two threads - hopefully this will
run on more systems."""
-
- def test_thread_backtrace_one_thread(self):
self.build()
(
self.inferior_target,
diff --git a/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py b/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
index c41e85fd670ba..12f99f07c78a8 100644
--- a/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
+++ b/lldb/test/API/commands/trace/multiple-threads/TestTraceStartStopMultipleThreads.py
@@ -31,43 +31,6 @@ def testStartMultipleLiveThreads(self):
self.traceStopProcess()
- @skipIf(oslist=no_match(["linux"]), archs=no_match(["i386", "x86_64"]))
- @testSBAPIAndCommands
- def testStartMultipleLiveThreadsWithStops(self):
- self.build()
- exe = self.getBuildArtifact("a.out")
-
- self.dbg.CreateTarget(exe)
-
- self.expect("b main")
- self.expect("b 6")
- self.expect("b 11")
-
- self.expect("r")
- self.traceStartProcess()
-
- # We'll see here the first thread
- self.expect("continue")
-
- # We are in thread 2
- self.expect("thread trace dump instructions", substrs=["main.cpp:9"])
- self.expect("thread trace dump instructions 2", substrs=["main.cpp:9"])
-
- # We stop tracing it
- self.expect("thread trace stop 2")
-
- # The trace is still in memory
- self.expect("thread trace dump instructions 2", substrs=["main.cpp:9"])
-
- # We'll stop at the next breakpoint, thread 2 will be still alive, but not traced. Thread 3 will be traced
- self.expect("continue")
- self.expect("thread trace dump instructions", substrs=["main.cpp:4"])
- self.expect("thread trace dump instructions 3", substrs=["main.cpp:4"])
-
- self.expect("thread trace dump instructions 2", substrs=["not traced"])
-
- self.traceStopProcess()
-
@skipIf(oslist=no_match(["linux"]), archs=no_match(["i386", "x86_64"]))
@testSBAPIAndCommands
def testStartMultipleLiveThreadsWithStops(self):
diff --git a/lldb/test/API/functionalities/completion/TestCompletion.py b/lldb/test/API/functionalities/completion/TestCompletion.py
index d304e12a80c2d..95873405eab84 100644
--- a/lldb/test/API/functionalities/completion/TestCompletion.py
+++ b/lldb/test/API/functionalities/completion/TestCompletion.py
@@ -196,12 +196,6 @@ def test_disassemble_dash_f(self):
def test_plugin_load(self):
self.complete_from_to("plugin load ", [])
- def test_log_enable(self):
- self.complete_from_to("log enable ll", ["lldb"])
- self.complete_from_to("log enable dw", ["dwarf"])
- self.complete_from_to("log enable lldb al", ["all"])
- self.complete_from_to("log enable lldb sym", ["symbol"])
-
def test_log_enable(self):
self.complete_from_to("log disable ll", ["lldb"])
self.complete_from_to("log disable dw", ["dwarf"])
diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py b/lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py
index f45f014016a90..7ea305621010d 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestIOSSimulator.py
@@ -79,7 +79,7 @@ def test_tvos_sim(self):
)
@skipIfRemote
- def test_tvos_sim(self):
+ def test_watchos_sim(self):
self.platform_test(
host="macosx",
process="watchossimulator",
diff --git a/lldb/test/API/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py b/lldb/test/API/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py
index 859e87cf75a59..e03e8e0df7782 100644
--- a/lldb/test/API/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py
+++ b/lldb/test/API/functionalities/plugins/python_os_plugin/TestPythonOSPlugin.py
@@ -17,7 +17,7 @@ def test_python_os_plugin(self):
self.build()
self.run_python_os_funcionality()
- def run_python_os_step(self):
+ def test_run_python_os_step(self):
"""Test that the Python operating system plugin works correctly when single stepping a virtual thread"""
self.build()
self.run_python_os_step()
diff --git a/lldb/test/API/lang/cpp/diamond/TestCppDiamond.py b/lldb/test/API/lang/cpp/diamond/TestCppDiamond.py
index 49a4740d0caf0..27062c0666a1a 100644
--- a/lldb/test/API/lang/cpp/diamond/TestCppDiamond.py
+++ b/lldb/test/API/lang/cpp/diamond/TestCppDiamond.py
@@ -109,7 +109,7 @@ def test(self):
@expectedFailureAll
@no_debug_info_test
- def test(self):
+ def test_invalid_member(self):
self.build()
lldbutil.run_to_source_breakpoint(
self, "// breakpoint 1", lldb.SBFileSpec("main.cpp")
diff --git a/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py b/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
index 311a59da0edb2..e2a5af13de6b6 100644
--- a/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
+++ b/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
@@ -3,7 +3,6 @@
from lldbsuite.test.lldbtest import *
import lldbsuite.test.lldbutil as lldbutil
-
class TestMembersAndLocalsWithSameName(TestBase):
def test_when_stopped_in_method(self):
self._load_exe()
diff --git a/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py b/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
index 87d8b3d84b8c7..0317d0a4880b1 100644
--- a/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
+++ b/lldb/test/API/lang/objcxx/cxx-bridged-po/TestObjCXXBridgedPO.py
@@ -7,7 +7,7 @@
class TestObjCXXBridgedPO(TestBase):
@skipIfDarwinEmbedded
@skipIf(macos_version=[">=", "13.0"])
- def test_bridged_type_po(self):
+ def test_bridged_type_po_old(self):
self.build()
lldbutil.run_to_source_breakpoint(
self, "break here", lldb.SBFileSpec("main.mm")
diff --git a/lldb/test/API/lang/rust/enum-structs/TestRustEnumStructs.py b/lldb/test/API/lang/rust/enum-structs/TestRustEnumStructs.py
index 46f96d89221d5..66df22cd9f99f 100644
--- a/lldb/test/API/lang/rust/enum-structs/TestRustEnumStructs.py
+++ b/lldb/test/API/lang/rust/enum-structs/TestRustEnumStructs.py
@@ -287,7 +287,7 @@ def test_niche_layout_with_fields_3_a(self):
(137, 1),
)
- def test_niche_layout_with_fields_3_a(self):
+ def test_niche_layout_with_fields_3_c(self):
# static NICHE_W_FIELDS_3_C: NicheLayoutWithFields3 = NicheLayoutWithFields3::C(false);
value = self.getFromGlobal("NICHE_W_FIELDS_3_C").getCurrentValue()
self.assertEqual(
diff --git a/lldb/test/API/test_utils/TestDecorators.py b/lldb/test/API/test_utils/TestDecorators.py
index eb09db69de349..4810e281c8e79 100644
--- a/lldb/test/API/test_utils/TestDecorators.py
+++ b/lldb/test/API/test_utils/TestDecorators.py
@@ -29,7 +29,7 @@ def test_add_test_categories(self):
self.assertIsNone(self.getDebugInfo())
@expectedFailureAll
- def test_xfail_regexp(self):
+ def test_xfail_empty(self):
"""Test that expectedFailureAll can be empty (but please just use expectedFailure)"""
self.fail()
@@ -92,7 +92,7 @@ def test_decorator_skip2(self):
# self.assertNotEqual(self.getDebugInfo(), "dwarf")
@expectedFailureAll
- def test_xfail_regexp(self):
+ def test_xfail_empty(self):
"""Test that xfail can be empty"""
self.fail()
>From d3d54d8e69872a502d99259952b733d8e7b9f744 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Fri, 28 Jun 2024 12:56:27 +0100
Subject: [PATCH 2/2] fixup! revert redundant whitespace change
---
.../TestMembersAndLocalsWithSameName.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py b/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
index e2a5af13de6b6..311a59da0edb2 100644
--- a/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
+++ b/lldb/test/API/lang/cpp/member-and-local-vars-with-same-name/TestMembersAndLocalsWithSameName.py
@@ -3,6 +3,7 @@
from lldbsuite.test.lldbtest import *
import lldbsuite.test.lldbutil as lldbutil
+
class TestMembersAndLocalsWithSameName(TestBase):
def test_when_stopped_in_method(self):
self._load_exe()
More information about the lldb-commits
mailing list