18
18
#include < iostream>
19
19
20
20
#include < memory-analyzer/gdb_api.cpp>
21
+
21
22
#include < util/run.h>
23
+ #include < util/tempfile.h>
22
24
23
- void compile_test_file ()
25
+ struct compile_test_filet
24
26
{
25
- REQUIRE (
26
- run (" gcc" , {" gcc" , " -g" , " -o" , " test" , " memory-analyzer/test.c" }) == 0 );
27
- }
27
+ compile_test_filet () : compiled(" test" , " " )
28
+ {
29
+ temporary_filet tmp (" test" , " .c" );
30
+ std::ofstream of (tmp ().c_str ());
31
+ REQUIRE (of.is_open ());
32
+
33
+ of << " int x;\n "
34
+ " float y;\n "
35
+ " char z;\n "
36
+ " \n "
37
+ " char *s = \" abc\" ;\n "
38
+ " int *p;\n "
39
+ " void *vp;\n "
40
+ " int *np = 0;\n "
41
+ " void *vp_string;\n "
42
+ " \n "
43
+ " void checkpoint()\n "
44
+ " {\n "
45
+ " }\n "
46
+ " void checkpoint2()\n "
47
+ " {\n "
48
+ " }\n "
49
+ " \n "
50
+ " void func()\n "
51
+ " {\n "
52
+ " checkpoint2();\n "
53
+ " }\n "
54
+ " \n "
55
+ " int main()\n "
56
+ " {\n "
57
+ " x = 8;\n "
58
+ " y = 2.5;\n "
59
+ " z = 'c';\n "
60
+ " \n "
61
+ " p = &x;\n "
62
+ " vp = (void *)&x;\n "
63
+ " vp_string = s;\n "
64
+ " \n "
65
+ " checkpoint();\n "
66
+ " \n "
67
+ " return 0;\n "
68
+ " }\n " ;
69
+ of.close ();
70
+
71
+ REQUIRE (run (" gcc" , {" gcc" , " -g" , " -o" , compiled (), tmp ()}) == 0 );
72
+ }
73
+
74
+ temporary_filet compiled;
75
+ };
28
76
29
77
void check_for_gdb ()
30
78
{
@@ -46,10 +94,10 @@ class gdb_api_testt : public gdb_apit
46
94
void gdb_api_internals_test ()
47
95
{
48
96
check_for_gdb ();
49
- compile_test_file () ;
97
+ compile_test_filet test_file ;
50
98
51
99
std::vector<std::string> args;
52
- args.push_back (" test " );
100
+ args.push_back (test_file. compiled () );
53
101
54
102
SECTION (" parse gdb output record" )
55
103
{
@@ -67,9 +115,34 @@ void gdb_api_internals_test()
67
115
68
116
SECTION (" read a line from an input stream" )
69
117
{
118
+ temporary_filet tmp (" input" , " .txt" );
119
+ std::ofstream of (tmp ().c_str ());
120
+ REQUIRE (of.is_open ());
121
+
122
+ of << " abc\n "
123
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
124
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
125
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
126
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
127
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
128
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
129
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
130
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
131
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
132
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
133
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
134
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
135
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
136
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
137
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
138
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
139
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n "
140
+ " xyz" ;
141
+ of.close ();
142
+
70
143
gdb_api_testt gdb_api (args);
71
144
72
- FILE *f = fopen (" memory-analyzer/input.txt " , " r" );
145
+ FILE *f = fopen (tmp (). c_str () , " r" );
73
146
gdb_api.response_stream = f;
74
147
75
148
std::string line = gdb_api.read_next_line ();
@@ -102,10 +175,10 @@ TEST_CASE("gdb api internals test", "[core][memory-analyzer]")
102
175
TEST_CASE (" gdb api test" , " [core][memory-analyzer]" )
103
176
{
104
177
check_for_gdb ();
105
- compile_test_file () ;
178
+ compile_test_filet test_file ;
106
179
107
180
std::vector<std::string> args;
108
- args.push_back (" test " );
181
+ args.push_back (test_file. compiled () );
109
182
110
183
{
111
184
gdb_apit gdb_api (args, true );
0 commit comments