summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSun He <sunheehnus@gmail.com>2014-03-06 11:16:36 +0800
committerSun He <sunheehnus@gmail.com>2014-03-06 11:16:36 +0800
commit6246de93b65fc74cba2e17ab031402adff84433f (patch)
tree676fbb35641726736b0cc8053f73ec9f1ed03d0e /tests
parent8384a50a2171f57cc1b8158777b124d2022db94e (diff)
parenta064dc2d0b6206116a35be4b62c58c3c1170d5de (diff)
downloadlibgit2-6246de93b65fc74cba2e17ab031402adff84433f.tar.gz
Merge completed: resolve the conflict with the upstream
Diffstat (limited to 'tests')
-rw-r--r--tests/object/shortid.c44
-rw-r--r--tests/odb/backend/nobackend.c41
-rw-r--r--tests/odb/loose.c4
-rw-r--r--tests/odb/mixed.c19
4 files changed, 107 insertions, 1 deletions
diff --git a/tests/object/shortid.c b/tests/object/shortid.c
new file mode 100644
index 000000000..fa1dac09a
--- /dev/null
+++ b/tests/object/shortid.c
@@ -0,0 +1,44 @@
+#include "clar_libgit2.h"
+
+git_repository *_repo;
+
+void test_object_shortid__initialize(void)
+{
+ cl_git_pass(git_repository_open(&_repo, cl_fixture("duplicate.git")));
+}
+
+void test_object_shortid__cleanup(void)
+{
+ git_repository_free(_repo);
+ _repo = NULL;
+}
+
+void test_object_shortid__select(void)
+{
+ git_oid full;
+ git_object *obj;
+ git_buf shorty = {0};
+
+ git_oid_fromstr(&full, "ce013625030ba8dba906f756967f9e9ca394464a");
+ cl_git_pass(git_object_lookup(&obj, _repo, &full, GIT_OBJ_ANY));
+ cl_git_pass(git_object_short_id(&shorty, obj));
+ cl_assert_equal_i(7, shorty.size);
+ cl_assert_equal_s("ce01362", shorty.ptr);
+ git_object_free(obj);
+
+ git_oid_fromstr(&full, "dea509d097ce692e167dfc6a48a7a280cc5e877e");
+ cl_git_pass(git_object_lookup(&obj, _repo, &full, GIT_OBJ_ANY));
+ cl_git_pass(git_object_short_id(&shorty, obj));
+ cl_assert_equal_i(9, shorty.size);
+ cl_assert_equal_s("dea509d09", shorty.ptr);
+ git_object_free(obj);
+
+ git_oid_fromstr(&full, "dea509d0b3cb8ee0650f6ca210bc83f4678851ba");
+ cl_git_pass(git_object_lookup(&obj, _repo, &full, GIT_OBJ_ANY));
+ cl_git_pass(git_object_short_id(&shorty, obj));
+ cl_assert_equal_i(9, shorty.size);
+ cl_assert_equal_s("dea509d0b", shorty.ptr);
+ git_object_free(obj);
+
+ git_buf_free(&shorty);
+}
diff --git a/tests/odb/backend/nobackend.c b/tests/odb/backend/nobackend.c
new file mode 100644
index 000000000..7ed5acced
--- /dev/null
+++ b/tests/odb/backend/nobackend.c
@@ -0,0 +1,41 @@
+#include "clar_libgit2.h"
+#include "repository.h"
+#include "git2/sys/repository.h"
+
+static git_repository *_repo;
+
+void test_odb_backend_nobackend__initialize(void)
+{
+ git_config *config;
+ git_odb *odb;
+ git_refdb *refdb;
+
+ cl_git_pass(git_repository_new(&_repo));
+ cl_git_pass(git_config_new(&config));
+ cl_git_pass(git_odb_new(&odb));
+ cl_git_pass(git_refdb_new(&refdb, _repo));
+
+ git_repository_set_config(_repo, config);
+ git_repository_set_odb(_repo, odb);
+ git_repository_set_refdb(_repo, refdb);
+}
+
+void test_odb_backend_nobackend__cleanup(void)
+{
+ git_repository_free(_repo);
+}
+
+void test_odb_backend_nobackend__write_fails_gracefully(void)
+{
+ git_oid id;
+ git_odb *odb;
+ const git_error *err;
+
+ git_repository_odb(&odb, _repo);
+ cl_git_fail(git_odb_write(&id, odb, "Hello world!\n", 13, GIT_OBJ_BLOB));
+
+ err = giterr_last();
+ cl_assert_equal_s(err->message, "Cannot write object - unsupported in the loaded odb backends");
+
+ git_odb_free(odb);
+}
diff --git a/tests/odb/loose.c b/tests/odb/loose.c
index a85f1430d..ef7136e36 100644
--- a/tests/odb/loose.c
+++ b/tests/odb/loose.c
@@ -76,9 +76,13 @@ void test_odb_loose__exists(void)
cl_assert(git_odb_exists(odb, &id));
+ cl_assert(git_odb_exists_prefix(&id2, odb, &id, 8));
+ cl_assert(git_oid_equal(&id, &id2));
+
/* Test for a non-existant object */
cl_git_pass(git_oid_fromstr(&id2, "8b137891791fe96927ad78e64b0aad7bded08baa"));
cl_assert(!git_odb_exists(odb, &id2));
+ cl_assert_equal_i(GIT_ENOTFOUND, git_odb_exists_prefix(NULL, odb, &id2, 8));
git_odb_free(odb);
}
diff --git a/tests/odb/mixed.c b/tests/odb/mixed.c
index 51970ceec..ceba4ec81 100644
--- a/tests/odb/mixed.c
+++ b/tests/odb/mixed.c
@@ -23,9 +23,14 @@ void test_odb_mixed__dup_oid(void) {
cl_git_pass(git_oid_fromstr(&oid, hex));
cl_git_pass(git_odb_read_prefix(&obj, _odb, &oid, GIT_OID_HEXSZ));
git_odb_object_free(obj);
+
+ cl_git_pass(git_odb_exists_prefix(NULL, _odb, &oid, GIT_OID_HEXSZ));
+
cl_git_pass(git_oid_fromstrn(&oid, short_hex, sizeof(short_hex) - 1));
cl_git_pass(git_odb_read_prefix(&obj, _odb, &oid, sizeof(short_hex) - 1));
git_odb_object_free(obj);
+
+ cl_git_pass(git_odb_exists_prefix(NULL, _odb, &oid, sizeof(short_hex) - 1));
}
/* some known sha collisions of file content:
@@ -37,7 +42,7 @@ void test_odb_mixed__dup_oid(void) {
void test_odb_mixed__dup_oid_prefix_0(void) {
char hex[10];
- git_oid oid;
+ git_oid oid, found;
git_odb_object *obj;
/* ambiguous in the same pack file */
@@ -46,10 +51,14 @@ void test_odb_mixed__dup_oid_prefix_0(void) {
cl_git_pass(git_oid_fromstrn(&oid, hex, strlen(hex)));
cl_assert_equal_i(
GIT_EAMBIGUOUS, git_odb_read_prefix(&obj, _odb, &oid, strlen(hex)));
+ cl_assert_equal_i(
+ GIT_EAMBIGUOUS, git_odb_exists_prefix(&found, _odb, &oid, strlen(hex)));
strncpy(hex, "dea509d09", sizeof(hex));
cl_git_pass(git_oid_fromstrn(&oid, hex, strlen(hex)));
cl_git_pass(git_odb_read_prefix(&obj, _odb, &oid, strlen(hex)));
+ cl_git_pass(git_odb_exists_prefix(&found, _odb, &oid, strlen(hex)));
+ cl_assert(git_oid_equal(&found, git_odb_object_id(obj)));
git_odb_object_free(obj);
strncpy(hex, "dea509d0b", sizeof(hex));
@@ -63,10 +72,14 @@ void test_odb_mixed__dup_oid_prefix_0(void) {
cl_git_pass(git_oid_fromstrn(&oid, hex, strlen(hex)));
cl_assert_equal_i(
GIT_EAMBIGUOUS, git_odb_read_prefix(&obj, _odb, &oid, strlen(hex)));
+ cl_assert_equal_i(
+ GIT_EAMBIGUOUS, git_odb_exists_prefix(&found, _odb, &oid, strlen(hex)));
strncpy(hex, "81b5bff5b", sizeof(hex));
cl_git_pass(git_oid_fromstrn(&oid, hex, strlen(hex)));
cl_git_pass(git_odb_read_prefix(&obj, _odb, &oid, strlen(hex)));
+ cl_git_pass(git_odb_exists_prefix(&found, _odb, &oid, strlen(hex)));
+ cl_assert(git_oid_equal(&found, git_odb_object_id(obj)));
git_odb_object_free(obj);
strncpy(hex, "81b5bff5f", sizeof(hex));
@@ -80,10 +93,14 @@ void test_odb_mixed__dup_oid_prefix_0(void) {
cl_git_pass(git_oid_fromstrn(&oid, hex, strlen(hex)));
cl_assert_equal_i(
GIT_EAMBIGUOUS, git_odb_read_prefix(&obj, _odb, &oid, strlen(hex)));
+ cl_assert_equal_i(
+ GIT_EAMBIGUOUS, git_odb_exists_prefix(&found, _odb, &oid, strlen(hex)));
strncpy(hex, "0ddeaded9", sizeof(hex));
cl_git_pass(git_oid_fromstrn(&oid, hex, strlen(hex)));
cl_git_pass(git_odb_read_prefix(&obj, _odb, &oid, strlen(hex)));
+ cl_git_pass(git_odb_exists_prefix(&found, _odb, &oid, strlen(hex)));
+ cl_assert(git_oid_equal(&found, git_odb_object_id(obj)));
git_odb_object_free(obj);
strncpy(hex, "0ddeadede", sizeof(hex));