1212
1313class TestDAP_source (lldbdap_testcase .DAPTestCaseBase ):
1414 @skipIfWindows
15- def test_stackTrace (self ):
15+ def test_source (self ):
1616 """
1717 Tests the 'source' packet.
1818 """
1919 program = self .getBuildArtifact ("a.out" )
2020 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" )
2423
25- lines = [self . qsort_call ]
24+ lines = [breakpoint_line ]
2625 breakpoint_ids = self .set_source_breakpoints (source , lines )
2726 self .assertEqual (
2827 len (breakpoint_ids ), len (lines ), "expect correct number of breakpoints"
@@ -35,38 +34,59 @@ def test_stackTrace(self):
3534
3635 (stackFrames , totalFrames ) = self .get_stackFrames_and_totalFramesCount ()
3736 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" )
4138 self .assertEqual (
4239 totalFrames ,
4340 frameCount ,
4441 "verify total frames returns a speculative page size" ,
4542 )
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+ },
4753 {
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+ },
5260 },
53- {"name" : "qsort" , "sourceName" : "qsort" , "containsSourceReference" : True },
5461 {
5562 "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+ },
5969 },
6070 ]
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" ]:
6888 sourceReference = self .get_dict_value (
69- frame , ["source" , "sourceReference" ]
89+ got , ["source" , "sourceReference" ]
7090 )
7191 response = self .dap_server .request_source (
7292 sourceReference = sourceReference
@@ -75,12 +95,12 @@ def test_stackTrace(self):
7595 self .assertGreater (
7696 len (self .get_dict_value (response , ["body" , "content" ])),
7797 0 ,
78- "verify content returned" ,
98+ "verify content returned disassembly " ,
7999 )
80100 self .assertEqual (
81101 self .get_dict_value (response , ["body" , "mimeType" ]),
82102 "text/x-lldb.disassembly" ,
83103 "verify mime type returned" ,
84104 )
85105 else :
86- self .assertNotIn ("sourceReference" , frame ["source" ])
106+ self .assertNotIn ("sourceReference" , got ["source" ])
0 commit comments