Skip to content

Commit caade22

Browse files
committed
Add tests for new po
1 parent 3c969d6 commit caade22

File tree

3 files changed

+217
-0
lines changed

3 files changed

+217
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
SWIFT_SOURCES := main.swift
2+
SWIFTFLAGS_EXTRAS := -parse-as-library
3+
include Makefile.rules
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import lldb
2+
import lldbsuite.test.lldbutil as lldbutil
3+
from lldbsuite.test.lldbtest import *
4+
from lldbsuite.test.decorators import *
5+
6+
7+
class TestCase(TestBase):
8+
9+
def setUp(self):
10+
TestBase.setUp(self)
11+
self.build()
12+
self.runCmd("settings set target.experimental.swift-use-new-po true")
13+
14+
self.log = self.getBuildArtifact("expr.log")
15+
self.runCmd(f"log enable lldb expr -f {self.log}")
16+
17+
def _filecheck(self, key):
18+
self.filecheck(f"platform shell cat {self.log}", __file__, f"-check-prefix=CHECK-{key}")
19+
20+
@swiftTest
21+
def test_int(self):
22+
lldbutil.run_to_source_breakpoint(
23+
self, "break int", lldb.SBFileSpec("main.swift")
24+
)
25+
self.expect("po value", substrs=["2025"])
26+
self._filecheck("INT")
27+
# CHECK-INT: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "SiD")
28+
29+
@swiftTest
30+
def test_string(self):
31+
lldbutil.run_to_source_breakpoint(
32+
self, "break string", lldb.SBFileSpec("main.swift")
33+
)
34+
self.expect("po value", substrs=["Po"])
35+
self._filecheck("STRING")
36+
# CHECK-STRING: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "SSD")
37+
38+
@swiftTest
39+
def test_struct(self):
40+
lldbutil.run_to_source_breakpoint(
41+
self, "break struct", lldb.SBFileSpec("main.swift")
42+
)
43+
self.expect("po value", substrs=["▿ Struct"])
44+
self._filecheck("STRUCT")
45+
# CHECK-STRUCT: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "1a6StructVD")
46+
47+
@swiftTest
48+
def test_class(self):
49+
lldbutil.run_to_source_breakpoint(
50+
self, "break class", lldb.SBFileSpec("main.swift")
51+
)
52+
self.expect("po value", substrs=["<Class: 0x"])
53+
self._filecheck("CLASS")
54+
# CHECK-CLASS: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "1a5ClassCD")
55+
56+
@swiftTest
57+
def test_enum(self):
58+
lldbutil.run_to_source_breakpoint(
59+
self, "break enum", lldb.SBFileSpec("main.swift")
60+
)
61+
self.expect("po value", substrs=["▿ Enum"])
62+
self._filecheck("ENUM")
63+
# CHECK-ENUM: stringForPrintObject(UnsafeRawPointer(bitPattern: {{.*}}), mangledTypeName: "1a4EnumOD")
64+
65+
@swiftTest
66+
def test_generic_struct(self):
67+
lldbutil.run_to_source_breakpoint(
68+
self, "break generic struct", lldb.SBFileSpec("main.swift")
69+
)
70+
self.expect("po value", substrs=["▿ GenericStruct<String>"])
71+
self._filecheck("GEN-STRUCT")
72+
# CHECK-GEN-STRUCT: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "1a13GenericStructVySSGD")
73+
74+
@swiftTest
75+
def test_generic_class(self):
76+
lldbutil.run_to_source_breakpoint(
77+
self, "break generic class", lldb.SBFileSpec("main.swift")
78+
)
79+
self.expect("po value", substrs=["<GenericClass<String>: 0x"])
80+
self._filecheck("GEN-CLASS")
81+
# CHECK-GEN-CLASS: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "1a12GenericClassCySSGD")
82+
83+
@swiftTest
84+
def test_generic_enum(self):
85+
lldbutil.run_to_source_breakpoint(
86+
self, "break generic enum", lldb.SBFileSpec("main.swift")
87+
)
88+
self.expect("po value", substrs=["▿ GenericEnum<String>"])
89+
self._filecheck("GEN-ENUM")
90+
# CHECK-GEN-ENUM: stringForPrintObject(UnsafeRawPointer(bitPattern: {{.*}}), mangledTypeName: "1a11GenericEnumOySSGD")
91+
92+
@swiftTest
93+
def test_described_struct(self):
94+
lldbutil.run_to_source_breakpoint(
95+
self, "break described struct", lldb.SBFileSpec("main.swift")
96+
)
97+
self.expect("po value", substrs=["DescribedStruct"])
98+
self._filecheck("DESC-STRUCT")
99+
# CHECK-DESC-STRUCT: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "1a15DescribedStructVD")
100+
101+
@swiftTest
102+
def test_described_class(self):
103+
lldbutil.run_to_source_breakpoint(
104+
self, "break described class", lldb.SBFileSpec("main.swift")
105+
)
106+
self.expect("po value", substrs=["DescribedClass"])
107+
self._filecheck("DESC-CLASS")
108+
# CHECK-DESC-CLASS: stringForPrintObject(UnsafeRawPointer(bitPattern: {{[0-9]+}}), mangledTypeName: "1a14DescribedClassCD")
109+
110+
@swiftTest
111+
def test_described_enum(self):
112+
lldbutil.run_to_source_breakpoint(
113+
self, "break described enum", lldb.SBFileSpec("main.swift")
114+
)
115+
self.expect("po value", substrs=["DescribedEnum"])
116+
self._filecheck("DESC-ENUM")
117+
# CHECK-DESC-ENUM: stringForPrintObject(UnsafeRawPointer(bitPattern: {{.*}}), mangledTypeName: "1a13DescribedEnumOD")
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
struct Struct {
2+
var s = "Po"
3+
var n = 2025
4+
}
5+
6+
class Class {
7+
var s = "Po"
8+
var n = 2025
9+
}
10+
11+
enum Enum {
12+
case zero
13+
case pair(String, Int)
14+
}
15+
16+
struct GenericStruct<T> {
17+
var s: T
18+
var n = 2025
19+
}
20+
21+
class GenericClass<T> {
22+
var s: T
23+
var n = 2025
24+
init(s: T) { self.s = s }
25+
}
26+
27+
enum GenericEnum<T> {
28+
case zero
29+
case pair(T, Int)
30+
}
31+
32+
struct DescribedStruct: CustomStringConvertible {
33+
var s = "Po"
34+
var n = 2025
35+
var description: String { "DescribedStruct" }
36+
}
37+
38+
class DescribedClass: CustomStringConvertible {
39+
var s = "Po"
40+
var n = 2025
41+
var description: String { "DescribedClass" }
42+
}
43+
44+
enum DescribedEnum: CustomStringConvertible {
45+
case zero
46+
case pair(String, Int)
47+
var description: String { "DescribedEnum" }
48+
}
49+
50+
@main struct Entry {
51+
static func main() {
52+
do {
53+
var value = 2025
54+
print("break int")
55+
}
56+
do {
57+
var value = "Po"
58+
print("break string")
59+
}
60+
do {
61+
let value = Struct()
62+
print("break struct")
63+
}
64+
do {
65+
let value = Class()
66+
print("break class")
67+
}
68+
do {
69+
let value = Enum.pair("Po", 50)
70+
print("break enum")
71+
}
72+
do {
73+
let value = GenericStruct(s: "Po")
74+
print("break generic struct")
75+
}
76+
do {
77+
let value = GenericClass(s: "Po")
78+
print("break generic class")
79+
}
80+
do {
81+
let value = GenericEnum.pair("Po", 50)
82+
print("break generic enum")
83+
}
84+
do {
85+
let value = DescribedStruct()
86+
print("break described struct")
87+
}
88+
do {
89+
let value = DescribedClass()
90+
print("break described class")
91+
}
92+
do {
93+
let value = DescribedEnum.pair("Po", 50)
94+
print("break described enum")
95+
}
96+
}
97+
}

0 commit comments

Comments
 (0)