1 #include "clar_libgit2.h"
6 static git_repository
*repo
;
8 #define WORKDIR "empty_standard_repo"
9 #define BARE_REPO "testrepo.git"
10 #define ELSEWHERE "elsewhere"
12 typedef int (*blob_creator_fn
)(
17 void test_object_blob_write__cleanup(void)
19 cl_git_sandbox_cleanup();
22 static void assert_blob_creation(const char *path_to_file
, const char *blob_from_path
, blob_creator_fn creator
)
25 cl_git_mkfile(path_to_file
, "1..2...3... Can you hear me?\n");
27 cl_must_pass(creator(&oid
, repo
, blob_from_path
));
28 cl_assert(git_oid_streq(&oid
, "da5e4f20c91c81b44a7e298f3d3fb3fe2f178e32") == 0);
31 void test_object_blob_write__can_create_a_blob_in_a_standard_repo_from_a_file_located_in_the_working_directory(void)
33 repo
= cl_git_sandbox_init(WORKDIR
);
35 assert_blob_creation(WORKDIR
"/test.txt", "test.txt", &git_blob_create_from_workdir
);
38 void test_object_blob_write__can_create_a_blob_in_a_standard_repo_from_a_absolute_filepath_pointing_outside_of_the_working_directory(void)
40 git_str full_path
= GIT_STR_INIT
;
42 repo
= cl_git_sandbox_init(WORKDIR
);
44 cl_must_pass(p_mkdir(ELSEWHERE
, 0777));
45 cl_must_pass(git_fs_path_prettify_dir(&full_path
, ELSEWHERE
, NULL
));
46 cl_must_pass(git_str_puts(&full_path
, "test.txt"));
48 assert_blob_creation(ELSEWHERE
"/test.txt", git_str_cstr(&full_path
), &git_blob_create_from_disk
);
50 git_str_dispose(&full_path
);
51 cl_must_pass(git_futils_rmdir_r(ELSEWHERE
, NULL
, GIT_RMDIR_REMOVE_FILES
));
54 void test_object_blob_write__can_create_a_blob_in_a_bare_repo_from_a_absolute_filepath(void)
56 git_str full_path
= GIT_STR_INIT
;
58 repo
= cl_git_sandbox_init(BARE_REPO
);
60 cl_must_pass(p_mkdir(ELSEWHERE
, 0777));
61 cl_must_pass(git_fs_path_prettify_dir(&full_path
, ELSEWHERE
, NULL
));
62 cl_must_pass(git_str_puts(&full_path
, "test.txt"));
64 assert_blob_creation(ELSEWHERE
"/test.txt", git_str_cstr(&full_path
), &git_blob_create_from_disk
);
66 git_str_dispose(&full_path
);
67 cl_must_pass(git_futils_rmdir_r(ELSEWHERE
, NULL
, GIT_RMDIR_REMOVE_FILES
));