Native PostgreSQL driver / client for Zig
0

Configure Feed

Select the types of activity you want to include in your feed.

accomodate Zig test runner changes

Karl Seguin (Jan 30, 2025, 8:29 AM +0800) ae5ee02b 4ddae099

+25 -29
+1 -1
build.zig
··· 59 59 .root_source_file = b.path("src/pg.zig"), 60 60 .target = target, 61 61 .optimize = optimize, 62 - .test_runner = b.path("test_runner.zig"), 62 + .test_runner = .{ .path = b.path("test_runner.zig"), .mode = .simple }, 63 63 }); 64 64 addLibs(lib_test, modules); 65 65 lib_test.addLibraryPath(std.Build.LazyPath{.cwd_relative = "/opt/openssl/lib"});
+4 -4
build.zig.zon
··· 4 4 .version = "0.0.0", 5 5 .dependencies = .{ 6 6 .buffer = .{ 7 - .url = "https://github.com/karlseguin/buffer.zig/archive/9b17ad57884825c1bb41be9991f7e47bbf3f5641.tar.gz", 8 - .hash = "1220ad5fa091e7e4b86052006a7f9ceb46bf908e22dcc6b1dd9c7ad2d07ba64b89f1" 7 + .url = "https://github.com/karlseguin/buffer.zig/archive/e9c95a7719996ce5e1e6a9a6eb3945dda9d98e28.tar.gz", 8 + .hash = "1220aab1cba5e34a4d37e59475642e19208e627c9780a5d1c4eab3661994a2872ca0" 9 9 }, 10 10 .metrics = .{ 11 - .url = "https://github.com/karlseguin/metrics.zig/archive/ca494b536787e95e5290527c0b30b82eff2d5d38.tar.gz", 12 - .hash = "122084a9d77d05c33b1a559882e34a018e2c8d4d1a017ccebe5a8c956c16d545fd0a" 11 + .url = "https://github.com/karlseguin/metrics.zig/archive/cf2797bcb3aea7e5cdaf4de39c5550c70796e7b1.tar.gz", 12 + .hash = "122061f30077ef518dd435d397598ab3c45daa3d2c25e6b45383fb94d0bd2c3af1af" 13 13 } 14 14 }, 15 15 }
+20 -24
test_runner.zig
··· 2 2 // const tests = b.addTest(.{ 3 3 // .target = target, 4 4 // .optimize = optimize, 5 - // .test_runner = "test_runner.zig", // add this line 5 + // .test_runner = .{ .path = b.path("test_runner.zig"), .mode = .simple }, // add this line 6 6 // .root_source_file = b.path("src/main.zig"), 7 7 // }); 8 8 ··· 38 38 39 39 for (builtin.test_functions) |t| { 40 40 if (isSetup(t)) { 41 - current_test = friendlyName(t.name); 42 41 t.func() catch |err| { 43 42 printer.status(.fail, "\nsetup \"{s}\" failed: {}\n", .{ t.name, err }); 44 43 return err; ··· 61 60 } 62 61 } 63 62 64 - const friendly_name = friendlyName(t.name); 63 + const friendly_name = blk: { 64 + const name = t.name; 65 + var it = std.mem.splitScalar(u8, name, '.'); 66 + while (it.next()) |value| { 67 + if (std.mem.eql(u8, value, "test")) { 68 + const rest = it.rest(); 69 + break :blk if (rest.len > 0) rest else name; 70 + } 71 + } 72 + break :blk name; 73 + }; 74 + 65 75 current_test = friendly_name; 66 76 std.testing.allocator_instance = .{}; 67 77 const result = t.func(); 68 78 current_test = null; 69 79 70 - if (is_unnamed_test) { 71 - continue; 72 - } 73 - 74 80 const ns_taken = slowest.endTiming(friendly_name); 75 81 76 82 if (std.testing.allocator_instance.deinit() == .leak) { ··· 108 114 109 115 for (builtin.test_functions) |t| { 110 116 if (isTeardown(t)) { 111 - current_test = friendlyName(t.name); 112 117 t.func() catch |err| { 113 118 printer.status(.fail, "\nteardown \"{s}\" failed: {}\n", .{ t.name, err }); 114 119 return err; ··· 129 134 try slowest.display(printer); 130 135 printer.fmt("\n", .{}); 131 136 std.posix.exit(if (fail == 0) 0 else 1); 132 - } 133 - 134 - fn friendlyName(name: []const u8) []const u8 { 135 - var it = std.mem.splitScalar(u8, name, '.'); 136 - while (it.next()) |value| { 137 - if (std.mem.eql(u8, value, "test")) { 138 - const rest = it.rest(); 139 - return if (rest.len > 0) rest else name; 140 - } 141 - } 142 - return name; 143 137 } 144 138 145 139 const Printer = struct { ··· 288 282 } 289 283 }; 290 284 291 - pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace, ret_addr: ?usize) noreturn { 292 - if (current_test) |ct| { 293 - std.debug.print("\x1b[31m{s}\npanic running \"{s}\"\n{s}\x1b[0m\n", .{ BORDER, ct, BORDER }); 285 + pub const panic = std.debug.FullPanic(struct { 286 + pub fn panicFn(msg: []const u8, first_trace_addr: ?usize) noreturn { 287 + if (current_test) |ct| { 288 + std.debug.print("\x1b[31m{s}\npanic running \"{s}\"\n{s}\x1b[0m\n", .{ BORDER, ct, BORDER }); 289 + } 290 + std.debug.defaultPanic(msg, first_trace_addr); 294 291 } 295 - std.debug.defaultPanic(msg, error_return_trace, ret_addr); 296 - } 292 + }.panicFn); 297 293 298 294 fn isUnnamed(t: std.builtin.TestFn) bool { 299 295 const marker = ".test_";