Example #1
0
void test_commit_parse__entire_commit(void)
{
	const int broken_commit_count = sizeof(failing_commit_cases) / sizeof(*failing_commit_cases);
	const int working_commit_count = sizeof(passing_commit_cases) / sizeof(*passing_commit_cases);
	int i;

	for (i = 0; i < broken_commit_count; ++i) {
		git_commit *commit;
		commit = (git_commit*)git__malloc(sizeof(git_commit));
		memset(commit, 0x0, sizeof(git_commit));
		commit->object.repo = g_repo;

		cl_git_fail(git_commit__parse_buffer(
			commit, failing_commit_cases[i], strlen(failing_commit_cases[i]))
		);

		git_commit__free(commit);
	}

	for (i = 0; i < working_commit_count; ++i) {
		git_commit *commit;

		commit = (git_commit*)git__malloc(sizeof(git_commit));
		memset(commit, 0x0, sizeof(git_commit));
		commit->object.repo = g_repo;

		cl_git_pass(git_commit__parse_buffer(
                     commit,
                     passing_commit_cases[i],
                     strlen(passing_commit_cases[i]))
         );

		if (!i)
			cl_assert_equal_s("\n", git_commit_message(commit));
		else
			cl_assert(git__prefixcmp(
				git_commit_message(commit), "a simple commit which works") == 0);

		git_commit__free(commit);
	}
}
Example #2
0
int git_commit_parse_existing(git_commit *commit)
{
	int error = 0;
	git_obj commit_obj;

	if (commit->parsed)
		return 0;

	error = git_odb_read(&commit_obj, commit->object.pool->db, &commit->object.id);
	if (error < 0)
		return error;

	if (commit_obj.type != GIT_OBJ_COMMIT) {
		error = GIT_EOBJTYPE;
		goto cleanup;
	}

	error = git_commit__parse_buffer(commit, commit_obj.data, commit_obj.len);

cleanup:
	git_obj_close(&commit_obj);
	return error;
}
Example #3
0
int git_commit__parse(git_commit *commit, git_odb_object *obj)
{
	assert(commit);
	return git_commit__parse_buffer(commit, obj->raw.data, obj->raw.len);
}