Commit 807d57e7df1b7f71abc445523b88262b63b1b4e3

Patrick Steinhardt 2015-11-11T10:54:41

tests: implement worktree helpers

diff --git a/tests/worktree/worktree_helpers.c b/tests/worktree/worktree_helpers.c
new file mode 100644
index 0000000..6d4cdba
--- /dev/null
+++ b/tests/worktree/worktree_helpers.c
@@ -0,0 +1,30 @@
+#include "clar_libgit2.h"
+#include "worktree_helpers.h"
+
+void cleanup_fixture_worktree(worktree_fixture *fixture)
+{
+	if (!fixture)
+		return;
+
+	if (fixture->repo) {
+		git_repository_free(fixture->repo);
+		fixture->repo = NULL;
+	}
+	if (fixture->worktree) {
+		git_repository_free(fixture->worktree);
+		fixture->worktree = NULL;
+	}
+
+	if (fixture->reponame)
+		cl_fixture_cleanup(fixture->reponame);
+	if (fixture->worktreename)
+		cl_fixture_cleanup(fixture->worktreename);
+}
+
+void setup_fixture_worktree(worktree_fixture *fixture)
+{
+	if (fixture->reponame)
+		fixture->repo = cl_git_sandbox_init(fixture->reponame);
+	if (fixture->worktreename)
+		fixture->worktree = cl_git_sandbox_init(fixture->worktreename);
+}
diff --git a/tests/worktree/worktree_helpers.h b/tests/worktree/worktree_helpers.h
new file mode 100644
index 0000000..35ea9ed
--- /dev/null
+++ b/tests/worktree/worktree_helpers.h
@@ -0,0 +1,11 @@
+typedef struct {
+	const char *reponame;
+	const char *worktreename;
+	git_repository *repo;
+	git_repository *worktree;
+} worktree_fixture;
+
+#define WORKTREE_FIXTURE_INIT(repo, worktree) { (repo), (worktree), NULL, NULL }
+
+void cleanup_fixture_worktree(worktree_fixture *fixture);
+void setup_fixture_worktree(worktree_fixture *fixture);