summaryrefslogtreecommitdiff
path: root/tests/t03-objwrite.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t03-objwrite.c')
-rw-r--r--tests/t03-objwrite.c73
1 files changed, 45 insertions, 28 deletions
diff --git a/tests/t03-objwrite.c b/tests/t03-objwrite.c
index 10c6c7f1a..773887397 100644
--- a/tests/t03-objwrite.c
+++ b/tests/t03-objwrite.c
@@ -24,6 +24,7 @@
*/
#include "test_lib.h"
#include "fileops.h"
+#include "odb.h"
static char *odb_dir = "test-objects";
#include "t03-data.h"
@@ -80,23 +81,39 @@ static int remove_object_files(object_data *d)
return 0;
}
+static int streaming_write(git_oid *oid, git_odb *odb, git_rawobj *raw)
+{
+ git_odb_stream *stream;
+ int error;
+
+ if ((error = git_odb_open_wstream(&stream, odb, raw->len, raw->type)) < GIT_SUCCESS)
+ return error;
+
+ stream->write(stream, raw->data, raw->len);
+
+ error = stream->finalize_write(oid, stream);
+ stream->free(stream);
+
+ return error;
+}
+
BEGIN_TEST(write0, "write loose commit object")
git_odb *db;
git_oid id1, id2;
- git_rawobj obj;
+ git_odb_object *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_pass(streaming_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(&obj, db, &id1));
- must_pass(cmp_objects(&obj, &commit_obj));
+ must_pass(cmp_objects(&obj->raw, &commit_obj));
- git_rawobj_close(&obj);
+ git_odb_object_close(obj);
git_odb_close(db);
must_pass(remove_object_files(&commit));
END_TEST
@@ -104,20 +121,20 @@ END_TEST
BEGIN_TEST(write1, "write loose tree object")
git_odb *db;
git_oid id1, id2;
- git_rawobj obj;
+ git_odb_object *obj;
must_pass(make_odb_dir());
must_pass(git_odb_open(&db, odb_dir));
must_pass(git_oid_mkstr(&id1, tree.id));
- must_pass(git_odb_write(&id2, db, &tree_obj));
+ must_pass(streaming_write(&id2, db, &tree_obj));
must_be_true(git_oid_cmp(&id1, &id2) == 0);
must_pass(check_object_files(&tree));
must_pass(git_odb_read(&obj, db, &id1));
- must_pass(cmp_objects(&obj, &tree_obj));
+ must_pass(cmp_objects(&obj->raw, &tree_obj));
- git_rawobj_close(&obj);
+ git_odb_object_close(obj);
git_odb_close(db);
must_pass(remove_object_files(&tree));
END_TEST
@@ -125,20 +142,20 @@ END_TEST
BEGIN_TEST(write2, "write loose tag object")
git_odb *db;
git_oid id1, id2;
- git_rawobj obj;
+ git_odb_object *obj;
must_pass(make_odb_dir());
must_pass(git_odb_open(&db, odb_dir));
must_pass(git_oid_mkstr(&id1, tag.id));
- must_pass(git_odb_write(&id2, db, &tag_obj));
+ must_pass(streaming_write(&id2, db, &tag_obj));
must_be_true(git_oid_cmp(&id1, &id2) == 0);
must_pass(check_object_files(&tag));
must_pass(git_odb_read(&obj, db, &id1));
- must_pass(cmp_objects(&obj, &tag_obj));
+ must_pass(cmp_objects(&obj->raw, &tag_obj));
- git_rawobj_close(&obj);
+ git_odb_object_close(obj);
git_odb_close(db);
must_pass(remove_object_files(&tag));
END_TEST
@@ -146,20 +163,20 @@ END_TEST
BEGIN_TEST(write3, "write zero-length object")
git_odb *db;
git_oid id1, id2;
- git_rawobj obj;
+ git_odb_object *obj;
must_pass(make_odb_dir());
must_pass(git_odb_open(&db, odb_dir));
must_pass(git_oid_mkstr(&id1, zero.id));
- must_pass(git_odb_write(&id2, db, &zero_obj));
+ must_pass(streaming_write(&id2, db, &zero_obj));
must_be_true(git_oid_cmp(&id1, &id2) == 0);
must_pass(check_object_files(&zero));
must_pass(git_odb_read(&obj, db, &id1));
- must_pass(cmp_objects(&obj, &zero_obj));
+ must_pass(cmp_objects(&obj->raw, &zero_obj));
- git_rawobj_close(&obj);
+ git_odb_object_close(obj);
git_odb_close(db);
must_pass(remove_object_files(&zero));
END_TEST
@@ -167,20 +184,20 @@ END_TEST
BEGIN_TEST(write4, "write one-byte long object")
git_odb *db;
git_oid id1, id2;
- git_rawobj obj;
+ git_odb_object *obj;
must_pass(make_odb_dir());
must_pass(git_odb_open(&db, odb_dir));
must_pass(git_oid_mkstr(&id1, one.id));
- must_pass(git_odb_write(&id2, db, &one_obj));
+ must_pass(streaming_write(&id2, db, &one_obj));
must_be_true(git_oid_cmp(&id1, &id2) == 0);
must_pass(check_object_files(&one));
must_pass(git_odb_read(&obj, db, &id1));
- must_pass(cmp_objects(&obj, &one_obj));
+ must_pass(cmp_objects(&obj->raw, &one_obj));
- git_rawobj_close(&obj);
+ git_odb_object_close(obj);
git_odb_close(db);
must_pass(remove_object_files(&one));
END_TEST
@@ -188,20 +205,20 @@ END_TEST
BEGIN_TEST(write5, "write two-byte long object")
git_odb *db;
git_oid id1, id2;
- git_rawobj obj;
+ git_odb_object *obj;
must_pass(make_odb_dir());
must_pass(git_odb_open(&db, odb_dir));
must_pass(git_oid_mkstr(&id1, two.id));
- must_pass(git_odb_write(&id2, db, &two_obj));
+ must_pass(streaming_write(&id2, db, &two_obj));
must_be_true(git_oid_cmp(&id1, &id2) == 0);
must_pass(check_object_files(&two));
must_pass(git_odb_read(&obj, db, &id1));
- must_pass(cmp_objects(&obj, &two_obj));
+ must_pass(cmp_objects(&obj->raw, &two_obj));
- git_rawobj_close(&obj);
+ git_odb_object_close(obj);
git_odb_close(db);
must_pass(remove_object_files(&two));
END_TEST
@@ -209,20 +226,20 @@ END_TEST
BEGIN_TEST(write6, "write an object which is several bytes long")
git_odb *db;
git_oid id1, id2;
- git_rawobj obj;
+ git_odb_object *obj;
must_pass(make_odb_dir());
must_pass(git_odb_open(&db, odb_dir));
must_pass(git_oid_mkstr(&id1, some.id));
- must_pass(git_odb_write(&id2, db, &some_obj));
+ must_pass(streaming_write(&id2, db, &some_obj));
must_be_true(git_oid_cmp(&id1, &id2) == 0);
must_pass(check_object_files(&some));
must_pass(git_odb_read(&obj, db, &id1));
- must_pass(cmp_objects(&obj, &some_obj));
+ must_pass(cmp_objects(&obj->raw, &some_obj));
- git_rawobj_close(&obj);
+ git_odb_object_close(obj);
git_odb_close(db);
must_pass(remove_object_files(&some));
END_TEST