shithub: libgit

ref: 3334f29a9e020b0447d81ac4afc8e1b31452276f
dir: /test/gtest.c/

View raw version
#include <u.h>
#include <libc.h>
#include "../git.h"

char *dir = "/tmp/repo";
char *addfile = "test";

#define test(A, B) if (!A) { \
	sysfatal("× %s: %r\n", B); \
} else { \
	print("√ %s\n", B); \
}

void
main(void)
{
	int fd;
	char buf[128];
	Gitlog *logs;
	
	if (!initgit("/tmp/repo"))
		sysfatal("gitinit: %r");
	
	snprint(buf, sizeof(buf), "%s/%s", dir, addfile);
	
	fd = create(buf, OWRITE, 0666);
	if (fd < 0)
		sysfatal("%r");
	fprint(fd, "hello world\n");
	close(fd);
	
	test(gitadd(addfile, nil), "git add file");
	test(gitcommit("add file\n\nsecond line\nthird line", addfile, nil), "git commit add");
	test(gitrm(addfile, nil), "git rm file");
	test(gitcommit("remove file", addfile, nil), "git commit rm");
	test(gitlog(&logs, 2, nil, nil), "git log 2");
	
	print("PRINT LOGS:\n");
	for (Gitlog *l = logs; l->hash; l++) {
		print("hash:   %s\n", l->hash);
		print("author: %s\n", l->author);
		print("date:   %s\n", l->date);
		print("msg:    %s\n-\n", l->message);
	}
	print("END PRINT LOGS\n");
	
	test(freegitlogs(logs), "free gitlogs");
	logs = nil;
}