Skip to content

Commit

Permalink
self hosted parser tests every combination of memory allocation failure
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewrk committed Feb 12, 2018
1 parent ec0846a commit b4e44c4
Showing 1 changed file with 9 additions and 10 deletions.
19 changes: 9 additions & 10 deletions std/zig/parser.zig
Expand Up @@ -1050,13 +1050,13 @@ fn testParse(source: []const u8, allocator: &mem.Allocator) ![]u8 {
defer tree.deinit();

var buffer = try std.Buffer.initSize(allocator, 0);
errdefer buffer.deinit();

var buffer_out_stream = io.BufferOutStream.init(&buffer);
try parser.renderSource(&buffer_out_stream.stream, tree.root_node);
return buffer.toOwnedSlice();
}

// TODO test for memory leaks
// TODO test for valid frees
fn testCanonical(source: []const u8) !void {
const needed_alloc_count = x: {
// Try it once with unlimited memory, make sure it works
Expand All @@ -1083,14 +1083,13 @@ fn testCanonical(source: []const u8) !void {
return error.NondeterministicMemoryUsage;
} else |err| switch (err) {
error.OutOfMemory => {
// TODO make this pass
//if (failing_allocator.allocated_bytes != failing_allocator.freed_bytes) {
// warn("\nfail_index: {}/{}\nallocated bytes: {}\nfreed bytes: {}\nallocations: {}\ndeallocations: {}\n",
// fail_index, needed_alloc_count,
// failing_allocator.allocated_bytes, failing_allocator.freed_bytes,
// failing_allocator.index, failing_allocator.deallocations);
// return error.MemoryLeakDetected;
//}
if (failing_allocator.allocated_bytes != failing_allocator.freed_bytes) {
warn("\nfail_index: {}/{}\nallocated bytes: {}\nfreed bytes: {}\nallocations: {}\ndeallocations: {}\n",
fail_index, needed_alloc_count,
failing_allocator.allocated_bytes, failing_allocator.freed_bytes,
failing_allocator.index, failing_allocator.deallocations);
return error.MemoryLeakDetected;
}
},
error.ParseError => @panic("test failed"),
}
Expand Down

0 comments on commit b4e44c4

Please sign in to comment.