]> gitweb.ps.run Git - ziggit/commitdiff
Update tests
authorpatrick-scho <patrick.schoenberger@posteo.de>
Mon, 12 Aug 2024 12:33:21 +0000 (14:33 +0200)
committerpatrick-scho <patrick.schoenberger@posteo.de>
Mon, 12 Aug 2024 12:33:21 +0000 (14:33 +0200)
git.zig

diff --git a/git.zig b/git.zig
index 0d42c2afe50e6cc448b412a30caa4559ebdde242..ee3eb3d4f19abd35cca3d462ab9e9623cb730e2a 100644 (file)
--- 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 => {},
+        }
+    }
+}