From 3872f2af40fed127c0907846c21734f29ce8dec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Tue, 28 Jun 2022 15:43:48 +0300 Subject: [PATCH] fix split_rev --- src/ErrCtx.zig | 23 ++++++++++++++++------- src/unix2db/main.zig | 14 ++++++++------ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/ErrCtx.zig b/src/ErrCtx.zig index 7fab231..e0cbc2d 100644 --- a/src/ErrCtx.zig +++ b/src/ErrCtx.zig @@ -61,13 +61,13 @@ pub fn wrapf(self: *ErrCtx, comptime format: []const u8, args: anytype) *ErrCtx pub fn iterator(self: *const ErrCtx) mem.SplitIterator(u8) { const slice = self.buf.constSlice(); - const last_byte = if (slice[slice.len - 1] == '0') slice.len - 1 else slice.len; + const last_byte = if (slice[slice.len - 1] == 0) slice.len - 1 else slice.len; return mem.split(u8, slice[0..last_byte], "\x00"); } pub fn rev(self: *const ErrCtx) SplitIteratorRev(u8) { const slice = self.buf.constSlice(); - const last_byte = if (slice[slice.len - 1] == '0') slice.len - 1 else slice.len; + const last_byte = if (slice[slice.len - 1] == 0) (slice.len - 1) else slice.len; return splitRev(u8, slice[0..last_byte], "\x00"); } @@ -101,17 +101,26 @@ test "almost overflow" { var ctx = ErrCtx{}; var wr = ctx.writer(); - try wr.writeAll("0" ** (capacity - 2)); + try wr.writeAll("0" ** (capacity - 3)); try wr.writeAll("11"); var it = ctx.iterator(); - try testing.expectEqualSlices(u8, it.next().?, "0" ** (capacity - 2)); - try testing.expectEqualSlices(u8, it.next().?, "1"); + try testing.expectEqualSlices(u8, it.next().?, "0" ** (capacity - 3)); + try testing.expectEqualSlices(u8, it.next().?, "11"); try testing.expectEqual(it.next(), null); var it_rev = ctx.rev(); - try testing.expectEqualSlices(u8, it_rev.next().?, "1"); - try testing.expectEqualSlices(u8, it_rev.next().?, "0" ** (capacity - 2)); + try testing.expectEqualSlices(u8, it_rev.next().?, "11"); + try testing.expectEqualSlices(u8, it_rev.next().?, "0" ** (capacity - 3)); + try testing.expectEqual(it.next(), null); +} + +test "rev" { + var ctx = ErrCtx{}; + ctx.print("yadda", .{}); + + var it = ctx.rev(); + try testing.expectEqualSlices(u8, "yadda", it.next().?); try testing.expectEqual(it.next(), null); } diff --git a/src/unix2db/main.zig b/src/unix2db/main.zig index b6edc33..ddf3f6c 100644 --- a/src/unix2db/main.zig +++ b/src/unix2db/main.zig @@ -151,13 +151,11 @@ test "trivial error: missing passwd file" { const exit_code = execute(allocator, stdout.writer(), stderr.writer(), args[0..]); try testing.expectEqual(@as(u8, 1), exit_code); - std.debug.print("stderr: '{s}'\n", .{stderr.items}); - if (true) return error.SkipZigTest; - try testing.expect(mem.startsWith( + try testing.expectEqualSlices( u8, stderr.items, - "ERROR: FileNotFound: fubar", - )); + "ERROR FileNotFound: ./passwd: open \n", + ); } test "fail" { @@ -167,7 +165,11 @@ test "fail" { var stderrw = stderr.writer(); const exit_code = fail(errc.wrapf("got 1", .{}), stderrw, error.NotSure); try testing.expectEqual(exit_code, 1); - std.debug.print("stderr: '{s}'\n", .{stderr.items}); + try testing.expectEqualSlices( + u8, + stderr.items, + "ERROR NotSure: got 1\n", + ); } test "smoke test" {