@@ -18,20 +18,36 @@ namespace __sanitizer {
18
18
19
19
TEST (SanitizerStacktracePrinter, RenderSourceLocation) {
20
20
InternalScopedString str (128 );
21
- RenderSourceLocation (&str, " /dir/file.cc" , 10 , 5 , " " );
21
+ RenderSourceLocation (&str, " /dir/file.cc" , 10 , 5 , false , " " );
22
22
EXPECT_STREQ (" /dir/file.cc:10:5" , str.data ());
23
23
24
24
str.clear ();
25
- RenderSourceLocation (&str, " /dir/file.cc" , 11 , 0 , " " );
25
+ RenderSourceLocation (&str, " /dir/file.cc" , 11 , 0 , false , " " );
26
26
EXPECT_STREQ (" /dir/file.cc:11" , str.data ());
27
27
28
28
str.clear ();
29
- RenderSourceLocation (&str, " /dir/file.cc" , 0 , 0 , " " );
29
+ RenderSourceLocation (&str, " /dir/file.cc" , 0 , 0 , false , " " );
30
30
EXPECT_STREQ (" /dir/file.cc" , str.data ());
31
31
32
32
str.clear ();
33
- RenderSourceLocation (&str, " /dir/file.cc" , 10 , 5 , " /dir/" );
33
+ RenderSourceLocation (&str, " /dir/file.cc" , 10 , 5 , false , " /dir/" );
34
34
EXPECT_STREQ (" file.cc:10:5" , str.data ());
35
+
36
+ str.clear ();
37
+ RenderSourceLocation (&str, " /dir/file.cc" , 10 , 5 , true , " " );
38
+ EXPECT_STREQ (" /dir/file.cc(10,5)" , str.data ());
39
+
40
+ str.clear ();
41
+ RenderSourceLocation (&str, " /dir/file.cc" , 11 , 0 , true , " " );
42
+ EXPECT_STREQ (" /dir/file.cc(11)" , str.data ());
43
+
44
+ str.clear ();
45
+ RenderSourceLocation (&str, " /dir/file.cc" , 0 , 0 , true , " " );
46
+ EXPECT_STREQ (" /dir/file.cc" , str.data ());
47
+
48
+ str.clear ();
49
+ RenderSourceLocation (&str, " /dir/file.cc" , 10 , 5 , true , " /dir/" );
50
+ EXPECT_STREQ (" file.cc(10,5)" , str.data ());
35
51
}
36
52
37
53
TEST (SanitizerStacktracePrinter, RenderModuleLocation) {
@@ -62,7 +78,7 @@ TEST(SanitizerStacktracePrinter, RenderFrame) {
62
78
RenderFrame (&str, " %% Frame:%n PC:%p Module:%m ModuleOffset:%o "
63
79
" Function:%f FunctionOffset:%q Source:%s Line:%l "
64
80
" Column:%c" ,
65
- frame_no, info, " /path/to/" , " function_" );
81
+ frame_no, info, false , " /path/to/" , " function_" );
66
82
EXPECT_STREQ (" % Frame:42 PC:0x400000 Module:my/module ModuleOffset:0x200 "
67
83
" Function:foo FunctionOffset:0x100 Source:my/source Line:10 "
68
84
" Column:5" ,
@@ -72,50 +88,64 @@ TEST(SanitizerStacktracePrinter, RenderFrame) {
72
88
73
89
// Test special format specifiers.
74
90
info.address = 0x400000 ;
75
- RenderFrame (&str, " %M" , frame_no, info);
91
+ RenderFrame (&str, " %M" , frame_no, info, false );
76
92
EXPECT_NE (nullptr , internal_strstr (str.data (), " 400000" ));
77
93
str.clear ();
78
94
79
- RenderFrame (&str, " %L" , frame_no, info);
95
+ RenderFrame (&str, " %L" , frame_no, info, false );
80
96
EXPECT_STREQ (" (<unknown module>)" , str.data ());
81
97
str.clear ();
82
98
83
99
info.module = internal_strdup (" /path/to/module" );
84
100
info.module_offset = 0x200 ;
85
- RenderFrame (&str, " %M" , frame_no, info);
101
+ RenderFrame (&str, " %M" , frame_no, info, false );
86
102
EXPECT_NE (nullptr , internal_strstr (str.data (), " (module+0x" ));
87
103
EXPECT_NE (nullptr , internal_strstr (str.data (), " 200" ));
88
104
str.clear ();
89
105
90
- RenderFrame (&str, " %L" , frame_no, info);
106
+ RenderFrame (&str, " %L" , frame_no, info, false );
91
107
EXPECT_STREQ (" (/path/to/module+0x200)" , str.data ());
92
108
str.clear ();
93
109
94
110
info.function = internal_strdup (" my_function" );
95
- RenderFrame (&str, " %F" , frame_no, info);
111
+ RenderFrame (&str, " %F" , frame_no, info, false );
96
112
EXPECT_STREQ (" in my_function" , str.data ());
97
113
str.clear ();
98
114
99
115
info.function_offset = 0x100 ;
100
- RenderFrame (&str, " %F %S" , frame_no, info);
116
+ RenderFrame (&str, " %F %S" , frame_no, info, false );
101
117
EXPECT_STREQ (" in my_function+0x100 <null>" , str.data ());
102
118
str.clear ();
103
119
104
120
info.file = internal_strdup (" my_file" );
105
- RenderFrame (&str, " %F %S" , frame_no, info);
121
+ RenderFrame (&str, " %F %S" , frame_no, info, false );
106
122
EXPECT_STREQ (" in my_function my_file" , str.data ());
107
123
str.clear ();
108
124
109
125
info.line = 10 ;
110
- RenderFrame (&str, " %F %S" , frame_no, info);
126
+ RenderFrame (&str, " %F %S" , frame_no, info, false );
111
127
EXPECT_STREQ (" in my_function my_file:10" , str.data ());
112
128
str.clear ();
113
129
114
130
info.column = 5 ;
115
- RenderFrame (&str, " %S %L" , frame_no, info);
131
+ RenderFrame (&str, " %S %L" , frame_no, info, false );
116
132
EXPECT_STREQ (" my_file:10:5 my_file:10:5" , str.data ());
117
133
str.clear ();
118
134
135
+ RenderFrame (&str, " %S %L" , frame_no, info, true );
136
+ EXPECT_STREQ (" my_file(10,5) my_file(10,5)" , str.data ());
137
+ str.clear ();
138
+
139
+ info.column = 0 ;
140
+ RenderFrame (&str, " %F %S" , frame_no, info, true );
141
+ EXPECT_STREQ (" in my_function my_file(10)" , str.data ());
142
+ str.clear ();
143
+
144
+ info.line = 0 ;
145
+ RenderFrame (&str, " %F %S" , frame_no, info, true );
146
+ EXPECT_STREQ (" in my_function my_file" , str.data ());
147
+ str.clear ();
148
+
119
149
info.Clear ();
120
150
}
121
151
0 commit comments