[Lldb-commits] [lldb] 64f0462 - [lldb][NFC] Modernize and cleanup TestClassTemplateParameterPack

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Tue Dec 1 06:54:08 PST 2020


Author: Raphael Isemann
Date: 2020-12-01T15:53:40+01:00
New Revision: 64f04629aa7a4cf9d2deb725683959faa4a857fe

URL: https://github.com/llvm/llvm-project/commit/64f04629aa7a4cf9d2deb725683959faa4a857fe
DIFF: https://github.com/llvm/llvm-project/commit/64f04629aa7a4cf9d2deb725683959faa4a857fe.diff

LOG: [lldb][NFC] Modernize and cleanup TestClassTemplateParameterPack

* Un-inline the test.
* Use expect_expr everywhere and also check all involved types.
* Clang-format the test sources.
* Explain what we're actually testing with the 'C' and 'D' templates.
* Split out the non-template-parameter-pack part of the test into its own small test.

Added: 
    lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile
    lldb/test/API/lang/cpp/non-type-template-param/Makefile
    lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py
    lldb/test/API/lang/cpp/non-type-template-param/main.cpp

Modified: 
    lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
    lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile b/lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile
new file mode 100644
index 000000000000..99998b20bcb0
--- /dev/null
+++ b/lldb/test/API/lang/cpp/class-template-parameter-pack/Makefile
@@ -0,0 +1,3 @@
+CXX_SOURCES := main.cpp
+
+include Makefile.rules

diff  --git a/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py b/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
index 7e67f73b7092..e0497b62f55c 100644
--- a/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
+++ b/lldb/test/API/lang/cpp/class-template-parameter-pack/TestClassTemplateParameterPack.py
@@ -1,7 +1,38 @@
-from lldbsuite.test import lldbinline
-from lldbsuite.test import decorators
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
 
-lldbinline.MakeInlineTest(
-    __file__, globals(), [
-        decorators.expectedFailureAll(
-            compiler="gcc")])
+class TestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    @expectedFailureAll(compiler="gcc")
+    def test(self):
+        self.build()
+        lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.cpp"))
+
+        # Test non-type template parameter packs.
+        self.expect_expr("myC", result_type="C<int, 16, 32>", result_children=[
+            ValueCheck(name="C<int, 16>", children=[
+                ValueCheck(name="member", value="64")
+            ])
+        ])
+        self.expect_expr("myLesserC.argsAre_16_32()", result_value="false")
+        self.expect_expr("myC.argsAre_16_32()", result_value="true")
+
+        # Test type template parameter packs.
+        self.expect_expr("myD", result_type="D<int, int, bool>", result_children=[
+            ValueCheck(name="D<int, int>", children=[
+                ValueCheck(name="member", value="64")
+            ])
+        ])
+        self.expect_expr("myLesserD.argsAre_Int_bool()", result_value="false")
+        self.expect_expr("myD.argsAre_Int_bool()", result_value="true")
+
+        # Disabling until we do template lookup correctly: http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20180507/040689.html
+        # FIXME: Rewrite this with expect_expr
+        # self.expect("expression -- C<int, 16>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
+        # self.expect("expression -- C<int, 16, 32>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])
+        # self.expect("expression -- D<int, int>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
+        # self.expect("expression -- D<int, int, bool>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])

diff  --git a/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp b/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp
index 82f09a1f268c..8bb0a42b58a3 100644
--- a/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp
+++ b/lldb/test/API/lang/cpp/class-template-parameter-pack/main.cpp
@@ -1,64 +1,43 @@
 template <class T, int... Args> struct C {
   T member;
-  bool isSixteenThirtyTwo() { return false; }
+  bool argsAre_16_32() { return false; }
 };
 
 template <> struct C<int, 16> {
   int member;
-  bool isSixteenThirtyTwo() { return false; }
+  bool argsAre_16_32() { return false; }
 };
 
 template <> struct C<int, 16, 32> : C<int, 16> {
-  bool isSixteenThirtyTwo() { return true; }
+  bool argsAre_16_32() { return true; }
 };
 
 template <class T, typename... Args> struct D {
   T member;
-  bool isIntBool() { return false; }
+  bool argsAre_Int_bool() { return false; }
 };
 
 template <> struct D<int, int> {
   int member;
-  bool isIntBool() { return false; }
+  bool argsAre_Int_bool() { return false; }
 };
 
 template <> struct D<int, int, bool> : D<int, int> {
-  bool isIntBool() { return true; }
+  bool argsAre_Int_bool() { return true; }
 };
 
-template<int Size> struct array {
-  int Arr[Size];
-  array() {}
-};
-
-int main (int argc, char const *argv[])
-{
-    C<int,16,32> myC;
-    C<int,16> myLesserC;
-    myC.member = 64;
-    (void)C<int,16,32>().isSixteenThirtyTwo();
-    (void)C<int,16>().isSixteenThirtyTwo();
-    (void)(myC.member != 64);   //% self.expect("expression -- myC", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["64"])
-                                //% self.expect("expression -- myLesserC.isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
-                                //% self.expect("expression -- myC.isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])
-
-                                // Disabling until we do template lookup correctly: http://lists.llvm.org/pipermail/lldb-commits/Week-of-Mon-20180507/040689.html
-                                //#% self.expect("expression -- C<int, 16>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
-                                //#% self.expect("expression -- C<int, 16, 32>().isSixteenThirtyTwo()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])
-   
-    D<int,int,bool> myD;
-    D<int,int> myLesserD;
-    myD.member = 64;
-    (void)D<int,int,bool>().isIntBool();
-    (void)D<int,int>().isIntBool(); //% self.expect("expression -- myD", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["64"])
-                                //% self.expect("expression -- myLesserD.isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
-                                //% self.expect("expression -- myD.isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])
-
-                                // See comment above.
-                                //#% self.expect("expression -- D<int, int>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["false"])
-                                //#% self.expect("expression -- D<int, int, bool>().isIntBool()", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["true"])
-
-    array<3> myArray; //% self.expect("expression -- myArray", DATA_TYPES_DISPLAYED_CORRECTLY, substrs = ["Arr"])
-
-    return 1;
+int main(int argc, char const *argv[]) {
+  C<int, 16, 32> myC;
+  C<int, 16> myLesserC;
+  myC.member = 64;
+  (void)C<int, 16, 32>().argsAre_16_32();
+  (void)C<int, 16>().argsAre_16_32();
+  (void)(myC.member != 64);
+  D<int, int, bool> myD;
+  D<int, int> myLesserD;
+  myD.member = 64;
+  (void)D<int, int, bool>().argsAre_Int_bool();
+  (void)D<int, int>().argsAre_Int_bool();
+
+  return 0; // break here
 }

diff  --git a/lldb/test/API/lang/cpp/non-type-template-param/Makefile b/lldb/test/API/lang/cpp/non-type-template-param/Makefile
new file mode 100644
index 000000000000..99998b20bcb0
--- /dev/null
+++ b/lldb/test/API/lang/cpp/non-type-template-param/Makefile
@@ -0,0 +1,3 @@
+CXX_SOURCES := main.cpp
+
+include Makefile.rules

diff  --git a/lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py b/lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py
new file mode 100644
index 000000000000..12cf5bd3ec03
--- /dev/null
+++ b/lldb/test/API/lang/cpp/non-type-template-param/TestAlignAsBaseClass.py
@@ -0,0 +1,17 @@
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+class TestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    @no_debug_info_test
+    def test(self):
+        self.build()
+        self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
+
+        self.expect_expr("myArray", result_type="array<3>", result_children=[
+            ValueCheck(name="Arr", type="int [3]")
+        ])

diff  --git a/lldb/test/API/lang/cpp/non-type-template-param/main.cpp b/lldb/test/API/lang/cpp/non-type-template-param/main.cpp
new file mode 100644
index 000000000000..9f508e931a1b
--- /dev/null
+++ b/lldb/test/API/lang/cpp/non-type-template-param/main.cpp
@@ -0,0 +1,8 @@
+template <int Size> struct array {
+  int Arr[Size];
+  array() {}
+};
+
+array<3> myArray;
+
+int main() {}


        


More information about the lldb-commits mailing list