12
12
13
13
class TestDAP_source (lldbdap_testcase .DAPTestCaseBase ):
14
14
@skipIfWindows
15
- def test_stackTrace (self ):
15
+ def test_source (self ):
16
16
"""
17
17
Tests the 'source' packet.
18
18
"""
19
19
program = self .getBuildArtifact ("a.out" )
20
20
self .build_and_launch (program )
21
- source = "main.c"
22
- self .source_path = os .path .join (os .getcwd (), source )
23
- self .qsort_call = line_number (source , "qsort call" )
21
+ source = self .getSourcePath ("main.c" )
22
+ breakpoint_line = line_number (source , "breakpoint" )
24
23
25
- lines = [self . qsort_call ]
24
+ lines = [breakpoint_line ]
26
25
breakpoint_ids = self .set_source_breakpoints (source , lines )
27
26
self .assertEqual (
28
27
len (breakpoint_ids ), len (lines ), "expect correct number of breakpoints"
@@ -35,38 +34,59 @@ def test_stackTrace(self):
35
34
36
35
(stackFrames , totalFrames ) = self .get_stackFrames_and_totalFramesCount ()
37
36
frameCount = len (stackFrames )
38
- self .assertGreaterEqual (
39
- frameCount , 3 , "verify we get frames from system librarys (libc qsort)"
40
- )
37
+ self .assertGreaterEqual (frameCount , 3 , "verify we got up to main at least" )
41
38
self .assertEqual (
42
39
totalFrames ,
43
40
frameCount ,
44
41
"verify total frames returns a speculative page size" ,
45
42
)
46
- expectedFrames = [
43
+ wantFrames = [
44
+ {
45
+ "name" : "handler" ,
46
+ "line" : 8 ,
47
+ "source" : {
48
+ "name" : "main.c" ,
49
+ "path" : source ,
50
+ "containsSourceReference" : False ,
51
+ },
52
+ },
47
53
{
48
- "name" : "comp" ,
49
- "line" : 14 ,
50
- "sourceName" : "main.c" ,
51
- "containsSourceReference" : False ,
54
+ "name" : "add" ,
55
+ "source" : {
56
+ "name" : "add" ,
57
+ "path" : program + "`add" ,
58
+ "containsSourceReference" : True ,
59
+ },
52
60
},
53
- {"name" : "qsort" , "sourceName" : "qsort" , "containsSourceReference" : True },
54
61
{
55
62
"name" : "main" ,
56
- "line" : 25 ,
57
- "sourceName" : "main.c" ,
58
- "containsSourceReference" : False ,
63
+ "line" : 12 ,
64
+ "source" : {
65
+ "name" : "main.c" ,
66
+ "path" : source ,
67
+ "containsSourceReference" : False ,
68
+ },
59
69
},
60
70
]
61
- for idx , expected in enumerate (expectedFrames ):
62
- frame = stackFrames [idx ]
63
- frame_name = self .get_dict_value (frame , ["name" ])
64
- self .assertRegex (frame_name , expected ["name" ])
65
- source_name = self .get_dict_value (frame , ["source" , "name" ])
66
- self .assertRegex (source_name , expected ["sourceName" ])
67
- if expected ["containsSourceReference" ]:
71
+ for idx , want in enumerate (wantFrames ):
72
+ got = stackFrames [idx ]
73
+ name = self .get_dict_value (got , ["name" ])
74
+ self .assertEqual (name , want ["name" ])
75
+
76
+ if "line" in want :
77
+ line = self .get_dict_value (got , ["line" ])
78
+ self .assertEqual (line , want ["line" ])
79
+
80
+ wantSource = want ["source" ]
81
+ source_name = self .get_dict_value (got , ["source" , "name" ])
82
+ self .assertEqual (source_name , wantSource ["name" ])
83
+
84
+ source_path = self .get_dict_value (got , ["source" , "path" ])
85
+ self .assertEqual (source_path , wantSource ["path" ])
86
+
87
+ if wantSource ["containsSourceReference" ]:
68
88
sourceReference = self .get_dict_value (
69
- frame , ["source" , "sourceReference" ]
89
+ got , ["source" , "sourceReference" ]
70
90
)
71
91
response = self .dap_server .request_source (
72
92
sourceReference = sourceReference
@@ -75,12 +95,12 @@ def test_stackTrace(self):
75
95
self .assertGreater (
76
96
len (self .get_dict_value (response , ["body" , "content" ])),
77
97
0 ,
78
- "verify content returned" ,
98
+ "verify content returned disassembly " ,
79
99
)
80
100
self .assertEqual (
81
101
self .get_dict_value (response , ["body" , "mimeType" ]),
82
102
"text/x-lldb.disassembly" ,
83
103
"verify mime type returned" ,
84
104
)
85
105
else :
86
- self .assertNotIn ("sourceReference" , frame ["source" ])
106
+ self .assertNotIn ("sourceReference" , got ["source" ])
0 commit comments