hblang/src/tests.zig
Jakub Doka ee6de69bf0
fixed some bugs
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
2025-03-15 12:28:36 +01:00

63 lines
1.8 KiB
Zig

const std = @import("std");
pub const utils = @import("utils.zig");
pub const root = @import("root.zig");
pub const test_util = @import("test_util.zig");
pub const hbc = @import("hbc.zig");
pub const fuzz = @import("fuzz.zig");
comptime {
std.testing.refAllDeclsRecursive(@This());
}
var ran = false;
pub fn runTest(name: []const u8, code: [:0]const u8) !void {
if (!ran) {
utils.Arena.initScratch(1024 * 1024);
ran = true;
}
const gpa = std.testing.allocator;
try test_util.testFmt(name, name, code);
var out = std.ArrayList(u8).init(gpa);
defer out.deinit();
errdefer {
const stderr = std.io.getStdErr();
const colors = std.io.tty.detectConfig(stderr);
test_util.testBuilder(name, code, gpa, stderr.writer().any(), colors, true) catch {};
}
try test_util.testBuilder(name, code, gpa, out.writer().any(), .no_color, false);
if (!test_util.hasEnv("SKIP_DIFF"))
try test_util.checkOrUpdatePrintTest(name, out.items);
}
pub fn runFuzzFindingTest(name: []const u8, code: []const u8) !void {
utils.Arena.initScratch(1024 * 1024);
defer utils.Arena.deinitScratch();
const gpa = std.testing.allocator;
std.debug.print("{s}\n", .{code});
//errdefer {
// const stderr = std.io.getStdErr();
// const colors = std.io.tty.detectConfig(stderr);
// test_util.testBuilder(name, code, gpa, stderr.writer().any(), colors, true) catch {};
//}
try test_util.testBuilder(name, code, gpa, std.io.null_writer.any(), .no_color, false);
}
pub fn runVendoredTest(path: []const u8) !void {
if (std.mem.endsWith(u8, path, "arena-crash.hb")) return;
if (std.mem.endsWith(u8, path, "fmt.hb")) return;
utils.Arena.initScratch(1024 * 1024);
defer utils.Arena.deinitScratch();
try test_util.runVendoredTest(std.testing.allocator, path);
}