From 91d1afe0f6aae9e0d20f6380b85c4ff840cef120 Mon Sep 17 00:00:00 2001 From: Vincent Rischmann Date: Mon, 15 Aug 2022 21:53:02 +0200 Subject: move test helpers --- test.zig | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test.zig (limited to 'test.zig') diff --git a/test.zig b/test.zig new file mode 100644 index 0000000..f6d9c9c --- /dev/null +++ b/test.zig @@ -0,0 +1,50 @@ +const std = @import("std"); +const build_options = @import("build_options"); +const mem = std.mem; +const testing = std.testing; + +const Db = @import("sqlite.zig").Db; + +pub fn getTestDb() !Db { + var buf: [1024]u8 = undefined; + var fba = std.heap.FixedBufferAllocator.init(&buf); + + var mode = dbMode(fba.allocator()); + + return try Db.init(.{ + .open_flags = .{ + .write = true, + .create = true, + }, + .mode = mode, + }); +} + +fn tmpDbPath(allocator: mem.Allocator) ![:0]const u8 { + const tmp_dir = testing.tmpDir(.{}); + + const path = try std.fs.path.join(allocator, &[_][]const u8{ + "zig-cache", + "tmp", + &tmp_dir.sub_path, + "zig-sqlite.db", + }); + defer allocator.free(path); + + return allocator.dupeZ(u8, path); +} + +fn dbMode(allocator: mem.Allocator) Db.Mode { + return if (build_options.in_memory) blk: { + break :blk .{ .Memory = {} }; + } else blk: { + if (build_options.dbfile) |dbfile| { + return .{ .File = allocator.dupeZ(u8, dbfile) catch unreachable }; + } + + const path = tmpDbPath(allocator) catch unreachable; + + std.fs.cwd().deleteFile(path) catch {}; + break :blk .{ .File = path }; + }; +} -- cgit v1.2.3