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_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); }
"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; must_pass(write_object_files(odb_dir, &tree)); must_pass(git_odb_open(&db, odb_dir)); must_pass(git_oid_mkstr(&id, tree.id));
BEGIN_TEST(write_commit) git_odb *db; git_oid id1, id2; git_obj obj; must_pass(make_odb_dir()); must_pass(git_odb_open(&db, odb_dir)); must_pass(git_oid_mkstr(&id1, commit.id)); must_pass(git_odb_write(&id2, db, &commit_obj)); must_be_true(git_oid_cmp(&id1, &id2) == 0); must_pass(check_object_files(&commit)); must_pass(git_odb__read_loose(&obj, db, &id1)); must_pass(cmp_objects(&obj, &commit_obj)); git_obj_close(&obj); git_odb_close(db); must_pass(remove_object_files(&commit)); END_TEST BEGIN_TEST(write_tree) git_odb *db; git_oid id1, id2; git_obj obj; must_pass(make_odb_dir()); must_pass(git_odb_open(&db, odb_dir)); must_pass(git_oid_mkstr(&id1, tree.id));