Turn on valgrind for C, C++ target specs
This commit is contained in:
parent
9c03d20083
commit
addf27d837
@ -94,6 +94,17 @@ EOF
|
|||||||
File.binwrite("spec/run/.stdout", stdout)
|
File.binwrite("spec/run/.stdout", stdout)
|
||||||
stderr.sub!(/^.*modules passed unittests\n/, "")
|
stderr.sub!(/^.*modules passed unittests\n/, "")
|
||||||
results = Results.new(stdout, stderr, status)
|
results = Results.new(stdout, stderr, status)
|
||||||
|
if %w[c cpp].include?(options[:language])
|
||||||
|
stdout, stderr, status = Open3.capture3("valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --verbose spec/run/testparser")
|
||||||
|
vgout = stdout + stderr
|
||||||
|
File.binwrite("spec/run/.vgout", vgout)
|
||||||
|
vgout.scan(/lost: (\d+) bytes/) do |match|
|
||||||
|
bytes = $1.to_i
|
||||||
|
if bytes > 0
|
||||||
|
raise "Valgrind detected memory leak"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
results
|
results
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1343,7 +1354,7 @@ EOF
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
>>
|
>>
|
||||||
ptype char const *;
|
ptype char *;
|
||||||
token id /[a-zA-Z_][a-zA-Z0-9_]*/ <<
|
token id /[a-zA-Z_][a-zA-Z0-9_]*/ <<
|
||||||
char * s = (char *)malloc(match_length + 1);
|
char * s = (char *)malloc(match_length + 1);
|
||||||
strncpy(s, (char const *)match, match_length);
|
strncpy(s, (char const *)match, match_length);
|
||||||
@ -1354,6 +1365,8 @@ drop /\\s+/;
|
|||||||
Start -> id:first id:second <<
|
Start -> id:first id:second <<
|
||||||
printf("first is %s\\n", ${first});
|
printf("first is %s\\n", ${first});
|
||||||
printf("second is %s\\n", ${second});
|
printf("second is %s\\n", ${second});
|
||||||
|
free(${first});
|
||||||
|
free(${second});
|
||||||
>>
|
>>
|
||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
@ -1390,7 +1403,7 @@ EOF
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
>>
|
>>
|
||||||
ptype char const *;
|
ptype char *;
|
||||||
token id /[a-zA-Z_][a-zA-Z0-9_]*/ <<
|
token id /[a-zA-Z_][a-zA-Z0-9_]*/ <<
|
||||||
char * s = (char *)malloc(match_length + 1);
|
char * s = (char *)malloc(match_length + 1);
|
||||||
strncpy(s, (char const *)match, match_length);
|
strncpy(s, (char const *)match, match_length);
|
||||||
@ -1403,6 +1416,8 @@ Start -> Foo;
|
|||||||
Start -> id:first id:second <<
|
Start -> id:first id:second <<
|
||||||
printf("first is %s\\n", ${first});
|
printf("first is %s\\n", ${first});
|
||||||
printf("second is %s\\n", ${second});
|
printf("second is %s\\n", ${second});
|
||||||
|
free(${first});
|
||||||
|
free(${second});
|
||||||
>>
|
>>
|
||||||
Foo -> ;
|
Foo -> ;
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@ -411,6 +411,7 @@ int main(int argc, char * argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(pfds);
|
||||||
p_free_ast(pmod);
|
p_free_ast(pmod);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user