From 24240c7efa951340d7f19e0f74d1075ab100598e Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Sun, 6 Jul 2025 07:49:57 +0100 Subject: [PATCH 1/3] [lldb][test] Combine libstdc++ and libc++ iterator tests into generic test --- .../{libcxx => generic}/iterator/Makefile | 3 - .../iterator/TestDataFormatterStdIterator.py} | 19 ++++-- .../{libcxx => generic}/iterator/main.cpp | 0 .../libstdcpp/iterator/Makefile | 6 -- .../iterator/TestDataFormatterStdIterator.py | 60 ------------------- .../libstdcpp/iterator/main.cpp | 38 ------------ 6 files changed, 13 insertions(+), 113 deletions(-) rename lldb/test/API/functionalities/data-formatter/data-formatter-stl/{libcxx => generic}/iterator/Makefile (54%) rename lldb/test/API/functionalities/data-formatter/data-formatter-stl/{libcxx/iterator/TestDataFormatterLibccIterator.py => generic/iterator/TestDataFormatterStdIterator.py} (90%) rename lldb/test/API/functionalities/data-formatter/data-formatter-stl/{libcxx => generic}/iterator/main.cpp (100%) delete mode 100644 lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile delete mode 100644 lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py delete mode 100644 lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/main.cpp diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/Makefile similarity index 54% rename from lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile rename to lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/Makefile index 564cbada74e08..99998b20bcb05 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/Makefile @@ -1,6 +1,3 @@ CXX_SOURCES := main.cpp -USE_LIBCPP := 1 - -CXXFLAGS_EXTRAS := -O0 include Makefile.rules diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py similarity index 90% rename from lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py rename to lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py index c43ee46fb658a..9cd1001352def 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py @@ -2,14 +2,13 @@ Test lldb data formatter subsystem. """ - import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil -class LibcxxIteratorDataFormatterTestCase(TestBase): +class StdIteratorDataFormatterTestCase(TestBase): def setUp(self): # Call super's setUp(). TestBase.setUp(self) @@ -17,10 +16,8 @@ def setUp(self): self.line = line_number("main.cpp", "// Set break point at this line.") self.namespace = "std" - @add_test_categories(["libc++"]) - def test_with_run_command(self): - """Test that libc++ iterators format properly.""" - self.build() + def do_test(self): + """Test that iterators format properly.""" self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) lldbutil.run_break_set_by_file_and_line( @@ -84,3 +81,13 @@ def cleanup(): self.expect("frame variable siumI.first", substrs=["second"], matching=False) self.expect("frame variable siumI.second", substrs=["second = 137"]) self.expect("frame variable siumI.second", substrs=["first"], matching=False) + + @add_test_categories(["libc++"]) + def test_libcxx(self): + self.build(dictionary={"USE_LIBCPP": 1}) + self.do_test() + + @add_test_categories(["libstdcpp"]) + def test_libstdcxx(self): + self.build(dictionary={"USE_LIBSTDCPP": 1}) + self.do_test() diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/main.cpp b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/main.cpp similarity index 100% rename from lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/main.cpp rename to lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/main.cpp diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile deleted file mode 100644 index c825977b1a5dc..0000000000000 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -CXX_SOURCES := main.cpp - -CFLAGS_EXTRAS := -O0 -USE_LIBSTDCPP := 1 - -include Makefile.rules diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py deleted file mode 100644 index a0d34fb56f970..0000000000000 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/TestDataFormatterStdIterator.py +++ /dev/null @@ -1,60 +0,0 @@ -""" -Test lldb data formatter subsystem. -""" - - -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class StdIteratorDataFormatterTestCase(TestBase): - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line number to break at. - self.line = line_number("main.cpp", "// Set break point at this line.") - - @add_test_categories(["libstdcxx"]) - @expectedFailureAll(bugnumber="llvm.org/pr50861", compiler="gcc") - def test_with_run_command(self): - """Test that libstdcpp iterators format properly.""" - self.build() - self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) - - lldbutil.run_break_set_by_file_and_line( - self, "main.cpp", self.line, num_expected_locations=-1 - ) - - self.runCmd("run", RUN_SUCCEEDED) - - # The stop reason of the thread should be breakpoint. - self.expect( - "thread list", - STOPPED_DUE_TO_BREAKPOINT, - substrs=["stopped", "stop reason = breakpoint"], - ) - - # This is the function to remove the custom formats in order to have a - # clean slate for the next test case. - def cleanup(): - self.runCmd("type format clear", check=False) - self.runCmd("type summary clear", check=False) - self.runCmd("type filter clear", check=False) - self.runCmd("type synth clear", check=False) - - # Execute the cleanup function during test case tear down. - self.addTearDownHook(cleanup) - - self.expect("frame variable ivI", substrs=["item = 3"]) - self.expect("expr ivI", substrs=["item = 3"]) - - self.expect("frame variable iimI", substrs=["first = 0", "second = 12"]) - self.expect("expr iimI", substrs=["first = 0", "second = 12"]) - - self.expect("frame variable simI", substrs=['first = "world"', "second = 42"]) - self.expect("expr simI", substrs=['first = "world"', "second = 42"]) - - self.expect("frame variable svI", substrs=['item = "hello"']) - self.expect("expr svI", substrs=['item = "hello"']) diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/main.cpp b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/main.cpp deleted file mode 100644 index 7ddffd19012e7..0000000000000 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/iterator/main.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include - -typedef std::map intint_map; -typedef std::map strint_map; - -typedef std::vector int_vector; -typedef std::vector string_vector; - -typedef intint_map::iterator iimter; -typedef strint_map::iterator simter; - -typedef int_vector::iterator ivter; -typedef string_vector::iterator svter; - -int main() -{ - intint_map iim; - iim[0] = 12; - - strint_map sim; - sim["world"] = 42; - - int_vector iv; - iv.push_back(3); - - string_vector sv; - sv.push_back("hello"); - - iimter iimI = iim.begin(); - simter simI = sim.begin(); - - ivter ivI = iv.begin(); - svter svI = sv.begin(); - - return 0; // Set break point at this line. -} From 317a7588cd98bc5cde3c95fadc00aef5b33b683b Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Mon, 7 Jul 2025 09:18:22 +0100 Subject: [PATCH 2/3] fixup! fix category name --- .../generic/iterator/TestDataFormatterStdIterator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py index 9cd1001352def..1c9ee72907e7b 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py @@ -87,7 +87,7 @@ def test_libcxx(self): self.build(dictionary={"USE_LIBCPP": 1}) self.do_test() - @add_test_categories(["libstdcpp"]) + @add_test_categories(["libstdcxx"]) def test_libstdcxx(self): self.build(dictionary={"USE_LIBSTDCPP": 1}) self.do_test() From 7317931b31d45ed9281b76b4c6c030bcc83b39e3 Mon Sep 17 00:00:00 2001 From: Michael Buch Date: Mon, 7 Jul 2025 09:22:57 +0100 Subject: [PATCH 3/3] fixup! remove unordered_map tests --- .../iterator/TestDataFormatterStdIterator.py | 16 ---------------- .../data-formatter-stl/generic/iterator/main.cpp | 13 ------------- 2 files changed, 29 deletions(-) diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py index 1c9ee72907e7b..373b1c9a2c8e8 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py @@ -66,22 +66,6 @@ def cleanup(): self.expect("frame variable svI", substrs=['item = "hello"']) self.expect("expr svI", substrs=['item = "hello"']) - self.expect("frame variable iiumI", substrs=["first = 61453", "second = 51966"]) - self.expect("expr iiumI", substrs=["first = 61453", "second = 51966"]) - - self.expect("frame variable siumI", substrs=['first = "hello"', "second = 137"]) - self.expect("expr siumI", substrs=['first = "hello"', "second = 137"]) - - self.expect("frame variable iiumI.first", substrs=["first = 61453"]) - self.expect("frame variable iiumI.first", substrs=["second"], matching=False) - self.expect("frame variable iiumI.second", substrs=["second = 51966"]) - self.expect("frame variable iiumI.second", substrs=["first"], matching=False) - - self.expect("frame variable siumI.first", substrs=['first = "hello"']) - self.expect("frame variable siumI.first", substrs=["second"], matching=False) - self.expect("frame variable siumI.second", substrs=["second = 137"]) - self.expect("frame variable siumI.second", substrs=["first"], matching=False) - @add_test_categories(["libc++"]) def test_libcxx(self): self.build(dictionary={"USE_LIBCPP": 1}) diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/main.cpp b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/main.cpp index e53c0f167c325..8c11df075f247 100644 --- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/main.cpp +++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/main.cpp @@ -5,16 +5,11 @@ typedef std::map intint_map; typedef std::map strint_map; -typedef std::unordered_map intint_umap; -typedef std::unordered_map strint_umap; - typedef std::vector int_vector; typedef std::vector string_vector; typedef intint_map::iterator ii_map_iter; typedef strint_map::iterator si_map_iter; -typedef intint_umap::iterator ii_umap_iter; -typedef strint_umap::iterator si_umap_iter; typedef int_vector::iterator ivter; typedef string_vector::iterator svter; @@ -26,12 +21,6 @@ int main() { strint_map sim; sim["world"] = 42; - intint_umap iium; - iium[0xF00D] = 0xCAFE; - - strint_umap sium; - sium["hello"] = 137; - int_vector iv; iv.push_back(3); @@ -40,8 +29,6 @@ int main() { ii_map_iter iimI = iim.begin(); si_map_iter simI = sim.begin(); - ii_umap_iter iiumI = iium.begin(); - si_umap_iter siumI = sium.begin(); ivter ivI = iv.begin(); svter svI = sv.begin();