static void test_read_object(object_data *data) { git_oid id; git_odb_object *obj; git_odb *odb; write_object_files(data); cl_git_pass(git_odb_open(&odb, "test-objects")); cl_git_pass(git_oid_fromstr(&id, data->id)); cl_git_pass(git_odb_read(&obj, odb, &id)); cmp_objects((git_rawobj *)&obj->raw, data); git_odb_object_free(obj); git_odb_free(odb); }
static void test_read_header(object_data *data) { git_oid id; git_odb *odb; size_t len; git_object_t type; write_object_files(data); cl_git_pass(git_odb_open(&odb, "test-objects")); cl_git_pass(git_oid_fromstr(&id, data->id)); cl_git_pass(git_odb_read_header(&len, &type, odb, &id)); cl_assert_equal_sz(data->dlen, len); cl_assert_equal_i(git_object_string2type(data->type), type); git_odb_free(odb); }
void test_odb_loose__exists(void) { git_oid id, id2; git_odb *odb; write_object_files(&one); cl_git_pass(git_odb_open(&odb, "test-objects")); cl_git_pass(git_oid_fromstr(&id, one.id)); cl_assert(git_odb_exists(odb, &id)); /* Test for a non-existant object */ cl_git_pass(git_oid_fromstr(&id2, "8b137891791fe96927ad78e64b0aad7bded08baa")); cl_assert(!git_odb_exists(odb, &id2)); git_odb_free(odb); }
static void test_read_object(object_data *data) { git_oid id; git_odb_object *obj; git_odb *odb; git_rawobj tmp; write_object_files(data); cl_git_pass(git_odb_open(&odb, "test-objects")); cl_git_pass(git_oid_fromstr(&id, data->id)); cl_git_pass(git_odb_read(&obj, odb, &id)); tmp.data = obj->buffer; tmp.len = obj->cached.size; tmp.type = obj->cached.type; cmp_objects(&tmp, data); git_odb_object_free(obj); git_odb_free(odb); }
static void test_readstream_object(object_data *data, size_t blocksize) { git_oid id; git_odb *odb; git_odb_stream *stream; git_rawobj tmp; char buf[2048], *ptr = buf; size_t remain; int ret; write_object_files(data); cl_git_pass(git_odb_open(&odb, "test-objects")); cl_git_pass(git_oid_fromstr(&id, data->id)); cl_git_pass(git_odb_open_rstream(&stream, &tmp.len, &tmp.type, odb, &id)); remain = tmp.len; while (remain) { cl_assert((ret = git_odb_stream_read(stream, ptr, blocksize)) >= 0); if (ret == 0) break; cl_assert(remain >= (size_t)ret); remain -= ret; ptr += ret; } cl_assert(remain == 0); tmp.data = buf; cmp_objects(&tmp, data); git_odb_stream_free(stream); git_odb_free(odb); }
void test_odb_loose__exists(void) { git_oid id, id2; git_odb *odb; write_object_files(&one); cl_git_pass(git_odb_open(&odb, "test-objects")); cl_git_pass(git_oid_fromstr(&id, one.id)); cl_assert(git_odb_exists(odb, &id)); cl_git_pass(git_oid_fromstrp(&id, "8b137891")); cl_git_pass(git_odb_exists_prefix(&id2, odb, &id, 8)); cl_assert_equal_i(0, git_oid_streq(&id2, one.id)); /* Test for a missing object */ cl_git_pass(git_oid_fromstr(&id, "8b137891791fe96927ad78e64b0aad7bded08baa")); cl_assert(!git_odb_exists(odb, &id)); cl_git_pass(git_oid_fromstrp(&id, "8b13789a")); cl_assert_equal_i(GIT_ENOTFOUND, git_odb_exists_prefix(&id2, odb, &id, 8)); git_odb_free(odb); }
some_bytes, sizeof(some_bytes), "fd8430bc864cfcd5f10e5590f8a447e01b942bfe", "blob", "test-objects/fd", "test-objects/fd/8430bc864cfcd5f10e5590f8a447e01b942bfe", some_data, sizeof(some_data), }; BEGIN_TEST(read_loose_commit) git_odb *db; git_oid id; git_obj obj; must_pass(write_object_files(odb_dir, &commit)); must_pass(git_odb_open(&db, odb_dir)); must_pass(git_oid_mkstr(&id, commit.id)); must_pass(git_odb__read_loose(&obj, db, &id)); must_pass(cmp_objects(&obj, &commit)); git_obj_close(&obj); git_odb_close(db); must_pass(remove_object_files(odb_dir, &commit)); END_TEST BEGIN_TEST(read_loose_tree) git_odb *db; git_oid id; git_obj obj;