treesummaryrefslogcommitdiff
diff options
context:
space:
mode:
authorpatrick-scho2024-08-12 14:33:21 +0200
committerpatrick-scho2024-08-12 14:33:21 +0200
commitb201a54d012efea0c92fb17fda58f41ce1ada19a (patch)
tree78dcfe67586ed748d62421f92b66c926f67c245a
parenta6e6daa88e6d294fbb7b6173b3cc37bcad28ccc8 (diff)
downloadziggit-b201a54d012efea0c92fb17fda58f41ce1ada19a.tar.gz
ziggit-b201a54d012efea0c92fb17fda58f41ce1ada19a.zip
Update tests
-rw-r--r--git.zig109
1 files changed, 79 insertions, 30 deletions
diff --git a/git.zig b/git.zig
index 0d42c2a..ee3eb3d 100644
--- a/git.zig
+++ b/git.zig
@@ -425,7 +425,25 @@ test "get object" {
if (try repo.getObject(head)) |o| {
defer std.testing.allocator.free(o.data);
- std.debug.print("object: {s}\n", .{o.data});
+ std.debug.print("object({}): {s}\n", .{ o.kind, o.data });
+ }
+}
+
+test "parse commit" {
+ var repo = try Repo.open(std.testing.allocator, "../imgui/.git");
+ defer repo.close();
+
+ const head = try repo.getHead();
+
+ if (try repo.getObject(head)) |o| {
+ defer std.testing.allocator.free(o.data);
+
+ switch (try o.parse(std.testing.allocator)) {
+ .c => |c| {
+ std.debug.print("commit:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ c.tree, c.parent, c.author, c.committer, c.message });
+ },
+ else => {},
+ }
}
}
@@ -436,44 +454,75 @@ test "get tree" {
if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| {
defer std.testing.allocator.free(o.data);
- std.debug.print("tree: {s}\n", .{o.data});
+ // std.debug.print("tree({}): {any}\n", .{ o.kind, o.data });
}
}
-// test "list commits" {
-// var repo = Repo.open(std.testing.allocator, "../imgui/.git");
-// defer repo.close();
-// const head = repo.getObject(repo.head);
-// defer head.deinit();
+test "parse tree" {
+ var repo = try Repo.open(std.testing.allocator, "../imgui/.git");
+ defer repo.close();
+
+ if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| {
+ defer std.testing.allocator.free(o.data);
-// var c = head.getCommit();
-// for (0..3) |_| {
-// std.debug.print("{}\n", .{c});
-// c = c.parent;
-// }
-// }
+ switch (try o.parse(std.testing.allocator)) {
+ .t => |t| {
+ defer t.deinit();
+ for (t.items) |treeEntry| {
+ std.debug.print("{s} {s} {x}\n", .{ treeEntry.permissions, treeEntry.name, treeEntry.id });
+ }
+ },
+ else => {},
+ }
+ }
+}
-// test "tree" {
-// var repo = Repo.open(std.testing.allocator, "../imgui/.git");
-// defer repo.close();
+test "list commits" {
+ var repo = try Repo.open(std.testing.allocator, "../imgui/.git");
+ defer repo.close();
-// const head = repo.getObject(repo.head);
-// defer head.deinit();
+ const head = try repo.getHead();
-// const commit = head.getCommit();
+ var id = head;
-// std.debug.print("{}\n", .{commit.tree});
-// }
+ for (0..3) |_| {
+ if (try repo.getObject(id)) |o| {
+ defer std.testing.allocator.free(o.data);
-// test "blob" {
-// var repo = Repo.open(std.testing.allocator, "../imgui/.git");
-// defer repo.close();
+ switch (try o.parse(std.testing.allocator)) {
+ .c => |c| {
+ std.debug.print("commit {x}:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ id, c.tree, c.parent, c.author, c.committer, c.message });
+ id = c.parent;
+ },
+ else => {},
+ }
+ }
+ }
+}
-// const head = repo.getObject(repo.head);
-// defer head.deinit();
+test "list blobs" {
+ var repo = try Repo.open(std.testing.allocator, "../imgui/.git");
+ defer repo.close();
-// const commit = head.getCommit();
-// const blob = repo.getBlob(commit.files[0].id);
+ if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| {
+ defer std.testing.allocator.free(o.data);
-// std.debug.print("{}\n", .{blob});
-// }
+ switch (try o.parse(std.testing.allocator)) {
+ .t => |t| {
+ defer t.deinit();
+ for (t.items) |treeEntry| {
+ if (try repo.getObject(treeEntry.id)) |bo| {
+ defer std.testing.allocator.free(bo.data);
+
+ if (treeEntry.permissions.len == 6) {
+ std.debug.print("{s}: {s}\n", .{ treeEntry.name, bo.data[0..50] });
+ } else {
+ std.debug.print("[{s}]\n", .{treeEntry.name});
+ }
+ }
+ }
+ },
+ else => {},
+ }
+ }
+}