| #include "clar_libgit2.h" |
| #include "buffer.h" |
| #include "refs.h" |
| #include "posix.h" |
| |
| static git_repository *_repo; |
| static git_buf _path; |
| static char *_actual; |
| |
| void test_repo_message__initialize(void) |
| { |
| _repo = cl_git_sandbox_init("testrepo.git"); |
| } |
| |
| void test_repo_message__cleanup(void) |
| { |
| cl_git_sandbox_cleanup(); |
| git_buf_free(&_path); |
| git__free(_actual); |
| _actual = NULL; |
| } |
| |
| void test_repo_message__none(void) |
| { |
| cl_assert_equal_i(GIT_ENOTFOUND, git_repository_message(NULL, 0, _repo)); |
| } |
| |
| void test_repo_message__message(void) |
| { |
| const char expected[] = "Test\n\nThis is a test of the emergency broadcast system\n"; |
| ssize_t len; |
| |
| cl_git_pass(git_buf_joinpath(&_path, git_repository_path(_repo), "MERGE_MSG")); |
| cl_git_mkfile(git_buf_cstr(&_path), expected); |
| |
| len = git_repository_message(NULL, 0, _repo); |
| cl_assert(len > 0); |
| |
| _actual = git__malloc(len + 1); |
| cl_assert(_actual != NULL); |
| |
| /* Test non truncation */ |
| cl_assert(git_repository_message(_actual, len, _repo) > 0); |
| cl_assert_equal_s(expected, _actual); |
| |
| /* Test truncation and that trailing NUL is inserted */ |
| cl_assert(git_repository_message(_actual, 6, _repo) > 0); |
| cl_assert_equal_s("Test\n", _actual); |
| |
| cl_git_pass(p_unlink(git_buf_cstr(&_path))); |
| cl_assert_equal_i(GIT_ENOTFOUND, git_repository_message(NULL, 0, _repo)); |
| } |