~alva/zig-bare

af7547f42d2d1369df4be00dc53db72df3d7ae91 — ugla 10 months ago fc83744
Don't use testing allocator outside of `test` blocks
1 files changed, 26 insertions(+), 14 deletions(-)

M src/test.zig
M src/test.zig => src/test.zig +26 -14
@@ 146,7 146,8 @@ test "read struct with void members" {
        \\pub fn main() void {
        \\  var fbs = io.fixedBufferStream("lol");
        \\  const Foo = struct { a: u8, b: void };
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  _ = try d.decode(Foo, fbs.reader());
        \\}
    , "unsupported type void");


@@ 269,7 270,8 @@ test "read map[u8]void" {
        \\pub fn main() void {
        \\  var fbs = io.fixedBufferStream("lol");
        \\  const HM = std.AutoHashMap(u8, void);
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  _ = try d.decode(HM, fbs.reader());
        \\}
    , "unsupported type void");


@@ 289,7 291,8 @@ test "read untagged union" {
        \\pub fn main() void {
        \\  const Foo = union { a: u8, b: void };
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  _ = try d.decode(Foo, fbs.reader());
        \\}
    , "only tagged unions are supported");


@@ 299,7 302,8 @@ test "read void" {
    try testCompileError(
        \\pub fn main() void {
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  _ = try d.decode(void, fbs.reader());
        \\}
    , "unsupported type void");


@@ 309,7 313,8 @@ test "read unsupported integer type" {
    try testCompileError(
        \\pub fn main() void {
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  _ = try d.decode(u7, fbs.reader());
        \\}
    , "unsupported integer type u7");


@@ 319,7 324,8 @@ test "read unsupported float type" {
    try testCompileError(
        \\pub fn main() void {
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  _ = try d.decode(f16, fbs.reader());
        \\}
    , "unsupported float type f16");


@@ 329,7 335,8 @@ test "read unsupported pointer type" {
    try testCompileError(
        \\pub fn main() void {
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  _ = try d.decode(*u8, fbs.reader());
        \\}
    , "slices are the only supported pointer type");


@@ 750,7 757,8 @@ test "invariant: fixed-length array must have length > 0 (read)" {
    try testCompileError(
        \\pub fn main() void {
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  try d.decode([0]u8, fbs.reader());
        \\}
    , "array length must be at least 1");


@@ 773,7 781,8 @@ test "invariant: structs must have at least 1 field (read)" {
        \\pub fn main() void {
        \\  const Foo = struct {};
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  try d.decode(Foo, fbs.reader());
        \\}
    , "structs must have 1 or more fields");


@@ 796,7 805,8 @@ test "invariant: unions must have at least 1 field (read)" {
        \\pub fn main() void {
        \\  const Foo = union(enum) {};
        \\  var fbs = io.fixedBufferStream("lol");
        \\  var d = Decoder.init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  var d = Decoder.init(gpa.allocator());
        \\  try d.decode(Foo{}, fbs.reader());
        \\}
    , "union declarations must have at least one tag");


@@ 817,7 827,8 @@ test "invariant: unions must have at least 1 field (write)" {
test "invariant: hashmap keys must be of primitive type" {
    try testCompileError(
        \\pub fn main() void {
        \\  const hm = std.AutoHashMap([64]u8, void).init(testing.allocator);
        \\  var gpa = std.heap.GeneralPurposeAllocator(.{}){};
        \\  const hm = std.AutoHashMap([64]u8, void).init(gpa.allocator());
        \\  var buf: [0x100]u8 = undefined;
        \\  var fbs = io.fixedBufferStream(&buf);
        \\  var e = Encoder.init();


@@ 860,12 871,13 @@ fn testCompileError(comptime code: []const u8, comptime expected_error: []const 
    defer tmpfile.close();
    _ = try tmpfile.write(boilerplate);
    _ = try tmpfile.write(code);
    var proc = std.ChildProcess.init(&[_][]const u8{ "zig", "build-exe", fname }, testing.allocator);
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    var proc = std.ChildProcess.init(&[_][]const u8{ "zig", "build-exe", fname }, gpa.allocator());
    proc.stderr_behavior = .Pipe;
    proc.stdout_behavior = .Pipe;
    try proc.spawn();
    const stderr = try proc.stderr.?.reader().readAllAlloc(testing.allocator, 0x1000);
    defer testing.allocator.free(stderr);
    const stderr = try proc.stderr.?.reader().readAllAlloc(gpa.allocator(), 0x1000);
    defer gpa.allocator().free(stderr);
    const term = try proc.wait();
    try checkErrorMessage(stderr, expected_error);
    try expectEqual(term.Exited, 1);