summaryrefslogtreecommitdiff
path: root/tests/t09-tree.c
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2011-03-18 19:38:49 +0200
committerVicent Marti <tanoku@gmail.com>2011-03-20 21:45:11 +0200
commit72a3fe42fb7208712bbe8f0981f4c6274c05e9c3 (patch)
treeb073a1c36b3215d94b1e78a0f294d7aa30d949df /tests/t09-tree.c
parentbb3de0c472b2d5d6b8091c190bee3db79c4b5e27 (diff)
downloadlibgit2-72a3fe42fb7208712bbe8f0981f4c6274c05e9c3.tar.gz
I broke your bindings
Hey. Apologies in advance -- I broke your bindings. This is a major commit that includes a long-overdue redesign of the whole object-database structure. This is expected to be the last major external API redesign of the library until the first non-alpha release. Please get your bindings up to date with these changes. They will be included in the next minor release. Sorry again! Major features include: - Real caching and refcounting on parsed objects - Real caching and refcounting on objects read from the ODB - Streaming writes & reads from the ODB - Single-method writes for all object types - The external API is now partially thread-safe The speed increases are significant in all aspects, specially when reading an object several times from the ODB (revwalking) and when writing big objects to the ODB. Here's a full changelog for the external API: blob.h ------ - Remove `git_blob_new` - Remove `git_blob_set_rawcontent` - Remove `git_blob_set_rawcontent_fromfile` - Rename `git_blob_writefile` -> `git_blob_create_fromfile` - Change `git_blob_create_fromfile`: The `path` argument is now relative to the repository's working dir - Add `git_blob_create_frombuffer` commit.h -------- - Remove `git_commit_new` - Remove `git_commit_add_parent` - Remove `git_commit_set_message` - Remove `git_commit_set_committer` - Remove `git_commit_set_author` - Remove `git_commit_set_tree` - Add `git_commit_create` - Add `git_commit_create_v` - Add `git_commit_create_o` - Add `git_commit_create_ov` tag.h ----- - Remove `git_tag_new` - Remove `git_tag_set_target` - Remove `git_tag_set_name` - Remove `git_tag_set_tagger` - Remove `git_tag_set_message` - Add `git_tag_create` - Add `git_tag_create_o` tree.h ------ - Change `git_tree_entry_2object`: New signature is `(git_object **object_out, git_repository *repo, git_tree_entry *entry)` - Remove `git_tree_new` - Remove `git_tree_add_entry` - Remove `git_tree_remove_entry_byindex` - Remove `git_tree_remove_entry_byname` - Remove `git_tree_clearentries` - Remove `git_tree_entry_set_id` - Remove `git_tree_entry_set_name` - Remove `git_tree_entry_set_attributes` object.h ------------ - Remove `git_object_new - Remove `git_object_write` - Change `git_object_close`: This method is now *mandatory*. Not closing an object causes a memory leak. odb.h ----- - Remove type `git_rawobj` - Remove `git_rawobj_close` - Rename `git_rawobj_hash` -> `git_odb_hash` - Change `git_odb_hash`: New signature is `(git_oid *id, const void *data, size_t len, git_otype type)` - Add type `git_odb_object` - Add `git_odb_object_close` - Change `git_odb_read`: New signature is `(git_odb_object **out, git_odb *db, const git_oid *id)` - Change `git_odb_read_header`: New signature is `(size_t *len_p, git_otype *type_p, git_odb *db, const git_oid *id)` - Remove `git_odb_write` - Add `git_odb_open_wstream` - Add `git_odb_open_rstream` odb_backend.h ------------- - Change type `git_odb_backend`: New internal signatures are as follows int (* read)(void **, size_t *, git_otype *, struct git_odb_backend *, const git_oid *) int (* read_header)(size_t *, git_otype *, struct git_odb_backend *, const git_oid *) int (* writestream)(struct git_odb_stream **, struct git_odb_backend *, size_t, git_otype) int (* readstream)( struct git_odb_stream **, struct git_odb_backend *, const git_oid *) - Add type `git_odb_stream` - Add enum `git_odb_streammode` Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'tests/t09-tree.c')
-rw-r--r--tests/t09-tree.c84
1 files changed, 3 insertions, 81 deletions
diff --git a/tests/t09-tree.c b/tests/t09-tree.c
index dfd266d16..6c1b2e643 100644
--- a/tests/t09-tree.c
+++ b/tests/t09-tree.c
@@ -75,93 +75,15 @@ BEGIN_TEST(read1, "read a tree from the repository")
must_be_true(strcmp(git_tree_entry_name(entry), "README") == 0);
- must_pass(git_tree_entry_2object(&obj, entry));
+ must_pass(git_tree_entry_2object(&obj, repo, entry));
git_repository_free(repo);
END_TEST
-BEGIN_TEST(write0, "add a new entry to a tree and write it back to disk")
- const unsigned int entry_count = 128;
-
- git_repository *repo;
- git_tree *tree;
- unsigned int i;
- git_oid entry_id;
-
- must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
- must_pass(git_tree_new(&tree, repo));
-
- git_oid_mkstr(&entry_id, tree_oid);
- for (i = 0; i < entry_count; ++i) {
- char filename[32];
- git_tree_entry *ent = NULL;
-
- sprintf(filename, "file%d.txt", i);
- must_pass(git_tree_add_entry(&ent, tree, &entry_id, filename, 040000));
- must_be_true(ent != NULL);
- }
-
- must_be_true(git_tree_entrycount(tree) == entry_count);
- must_pass(git_object_write((git_object *)tree));
- must_pass(remove_loose_object(REPOSITORY_FOLDER, (git_object *)tree));
-
- git_repository_free(repo);
-END_TEST
-
-BEGIN_TEST(write1, "add several entries in-memory and validate that they exist; write back to disk")
- git_oid id;
- git_repository *repo;
- git_tree *tree;
- git_tree_entry *entry;
- unsigned int i;
- /* char hex_oid[41]; */
-
- must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
-
- git_oid_mkstr(&id, tree_oid);
-
- must_pass(git_tree_lookup(&tree, repo, &id));
-
- must_be_true(git_tree_entrycount(tree) == 3);
-
- /* check there is NP if we don't want the
- * created entry back */
- git_tree_add_entry(NULL, tree, &id, "zzz_test_entry.dat", 0);
- git_tree_add_entry(NULL, tree, &id, "01_test_entry.txt", 0);
-
- must_be_true(git_tree_entrycount(tree) == 5);
-
- entry = git_tree_entry_byindex(tree, 0);
- must_be_true(strcmp(git_tree_entry_name(entry), "01_test_entry.txt") == 0);
-
- entry = git_tree_entry_byindex(tree, 4);
- must_be_true(strcmp(git_tree_entry_name(entry), "zzz_test_entry.dat") == 0);
-
- must_pass(git_tree_remove_entry_byname(tree, "README"));
- must_be_true(git_tree_entrycount(tree) == 4);
-
- for (i = 0; i < git_tree_entrycount(tree); ++i) {
- entry = git_tree_entry_byindex(tree, i);
- must_be_true(strcmp(git_tree_entry_name(entry), "README") != 0);
- }
-
- must_pass(git_object_write((git_object *)tree));
-
-/*
- git_oid_fmt(hex_oid, git_tree_id(tree));
- hex_oid[40] = 0;
- printf("TREE New SHA1: %s\n", hex_oid);
-*/
-
- must_pass(remove_loose_object(REPOSITORY_FOLDER, (git_object *)tree));
- git_repository_free(repo);
-END_TEST
-
-
BEGIN_SUITE(tree)
ADD_TEST(read0);
ADD_TEST(read1);
- ADD_TEST(write0);
- ADD_TEST(write1);
+// ADD_TEST(write0); /* TODO THREADSAFE */
+// ADD_TEST(write1);
END_SUITE