diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-05-05 14:22:53 -0700 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-05-05 14:22:53 -0700 |
commit | 48ecd122ea6fb8cf12fb4029974c314e5d9efb62 (patch) | |
tree | 88f90fa8c9d903f072a2b1c647c51a9899e520c7 /tests-clar/refs | |
parent | 2218fd57a50ceb851cb131939bf0747e072e40f6 (diff) | |
parent | 4ef14af93517b3842bc0dfa24147cf10dd029582 (diff) | |
download | libgit2-48ecd122ea6fb8cf12fb4029974c314e5d9efb62.tar.gz |
Merge pull request #659 from libgit2/development-merge
New-error-handling
Diffstat (limited to 'tests-clar/refs')
-rw-r--r-- | tests-clar/refs/branches/create.c | 113 | ||||
-rw-r--r-- | tests-clar/refs/branches/delete.c | 76 | ||||
-rw-r--r-- | tests-clar/refs/branches/listall.c | 49 | ||||
-rw-r--r-- | tests-clar/refs/branches/move.c | 62 | ||||
-rw-r--r-- | tests-clar/refs/create.c | 4 | ||||
-rw-r--r-- | tests-clar/refs/delete.c | 4 | ||||
-rw-r--r-- | tests-clar/refs/lookup.c | 42 | ||||
-rw-r--r-- | tests-clar/refs/overwrite.c | 6 | ||||
-rw-r--r-- | tests-clar/refs/pack.c | 8 | ||||
-rw-r--r-- | tests-clar/refs/read.c | 12 | ||||
-rw-r--r-- | tests-clar/refs/reflog.c | 14 | ||||
-rw-r--r-- | tests-clar/refs/rename.c | 32 | ||||
-rw-r--r-- | tests-clar/refs/unicode.c | 42 |
13 files changed, 424 insertions, 40 deletions
diff --git a/tests-clar/refs/branches/create.c b/tests-clar/refs/branches/create.c new file mode 100644 index 000000000..ad7e1fd2c --- /dev/null +++ b/tests-clar/refs/branches/create.c @@ -0,0 +1,113 @@ +#include "clar_libgit2.h" +#include "refs.h" +#include "branch.h" + +static git_repository *repo; +static git_oid branch_target_oid; +static git_object *target; + +void test_refs_branches_create__initialize(void) +{ + cl_fixture_sandbox("testrepo.git"); + cl_git_pass(git_repository_open(&repo, "testrepo.git")); +} + +void test_refs_branches_create__cleanup(void) +{ + git_object_free(target); + git_repository_free(repo); + + cl_fixture_cleanup("testrepo.git"); +} + +static void retrieve_target_from_oid(git_object **object_out, git_repository *repo, const char *sha) +{ + git_oid oid; + + cl_git_pass(git_oid_fromstr(&oid, sha)); + cl_git_pass(git_object_lookup(object_out, repo, &oid, GIT_OBJ_ANY)); +} + +static void retrieve_known_commit(git_object **object, git_repository *repo) +{ + retrieve_target_from_oid(object, repo, "e90810b8df3e80c413d903f631643c716887138d"); +} + +#define NEW_BRANCH_NAME "new-branch-on-the-block" + +void test_refs_branches_create__can_create_a_local_branch(void) +{ + retrieve_known_commit(&target, repo); + + cl_git_pass(git_branch_create(&branch_target_oid, repo, NEW_BRANCH_NAME, target, 0)); + cl_git_pass(git_oid_cmp(&branch_target_oid, git_object_id(target))); +} + +void test_refs_branches_create__creating_a_local_branch_triggers_the_creation_of_a_new_direct_reference(void) +{ + git_reference *branch; + + retrieve_known_commit(&target, repo); + + cl_git_fail(git_reference_lookup(&branch, repo, GIT_REFS_HEADS_DIR NEW_BRANCH_NAME)); + + cl_git_pass(git_branch_create(&branch_target_oid, repo, NEW_BRANCH_NAME, target, 0)); + + cl_git_pass(git_reference_lookup(&branch, repo, GIT_REFS_HEADS_DIR NEW_BRANCH_NAME)); + cl_assert(git_reference_type(branch) == GIT_REF_OID); + + git_reference_free(branch); +} + +void test_refs_branches_create__can_not_create_a_branch_if_its_name_collide_with_an_existing_one(void) +{ + retrieve_known_commit(&target, repo); + + cl_git_fail(git_branch_create(&branch_target_oid, repo, "br2", target, 0)); +} + +void test_refs_branches_create__can_force_create_over_an_existing_branch(void) +{ + retrieve_known_commit(&target, repo); + + cl_git_pass(git_branch_create(&branch_target_oid, repo, "br2", target, 1)); + cl_git_pass(git_oid_cmp(&branch_target_oid, git_object_id(target))); +} + +void test_refs_branches_create__can_not_create_a_branch_pointing_at_an_object_unknown_from_the_repository(void) +{ + git_repository *repo2; + + /* Open another instance of the same repository */ + cl_git_pass(git_repository_open(&repo2, cl_fixture("testrepo.git"))); + + /* Retrieve a commit object from this different repository */ + retrieve_known_commit(&target, repo2); + + cl_git_fail(git_branch_create(&branch_target_oid, repo, NEW_BRANCH_NAME, target, 0)); + + git_repository_free(repo2); +} + +void test_refs_branches_create__creating_a_branch_targeting_a_tag_dereferences_it_to_its_commit(void) +{ + /* b25fa35 is a tag, pointing to another tag which points to a commit */ + retrieve_target_from_oid(&target, repo, "b25fa35b38051e4ae45d4222e795f9df2e43f1d1"); + + cl_git_pass(git_branch_create(&branch_target_oid, repo, NEW_BRANCH_NAME, target, 0)); + cl_git_pass(git_oid_streq(&branch_target_oid, "e90810b8df3e80c413d903f631643c716887138d")); +} + +void test_refs_branches_create__can_not_create_a_branch_pointing_to_a_non_commit_object(void) +{ + /* 53fc32d is the tree of commit e90810b */ + retrieve_target_from_oid(&target, repo, "53fc32d17276939fc79ed05badaef2db09990016"); + + cl_git_fail(git_branch_create(&branch_target_oid, repo, NEW_BRANCH_NAME, target, 0)); + git_object_free(target); + + /* 521d87c is an annotated tag pointing to a blob */ + retrieve_target_from_oid(&target, repo, "521d87c1ec3aef9824daf6d96cc0ae3710766d91"); + + cl_git_fail(git_branch_create(&branch_target_oid, repo, NEW_BRANCH_NAME, target, 0)); +} diff --git a/tests-clar/refs/branches/delete.c b/tests-clar/refs/branches/delete.c new file mode 100644 index 000000000..095893020 --- /dev/null +++ b/tests-clar/refs/branches/delete.c @@ -0,0 +1,76 @@ +#include "clar_libgit2.h" +#include "refs.h" +#include "branch.h" + +static git_repository *repo; +static git_reference *fake_remote; + +void test_refs_branches_delete__initialize(void) +{ + git_oid id; + + cl_fixture_sandbox("testrepo.git"); + cl_git_pass(git_repository_open(&repo, "testrepo.git")); + + cl_git_pass(git_oid_fromstr(&id, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644")); + cl_git_pass(git_reference_create_oid(&fake_remote, repo, "refs/remotes/nulltoken/master", &id, 0)); +} + +void test_refs_branches_delete__cleanup(void) +{ + git_reference_free(fake_remote); + git_repository_free(repo); + + cl_fixture_cleanup("testrepo.git"); +} + +void test_refs_branches_delete__can_not_delete_a_non_existing_branch(void) +{ + cl_git_fail(git_branch_delete(repo, "i-am-not-a-local-branch", GIT_BRANCH_LOCAL)); + cl_git_fail(git_branch_delete(repo, "neither/a-remote-one", GIT_BRANCH_REMOTE)); +} + +void test_refs_branches_delete__can_not_delete_a_branch_pointed_at_by_HEAD(void) +{ + git_reference *head; + + /* Ensure HEAD targets the local master branch */ + cl_git_pass(git_reference_lookup(&head, repo, GIT_HEAD_FILE)); + cl_assert(strcmp("refs/heads/master", git_reference_target(head)) == 0); + git_reference_free(head); + + cl_git_fail(git_branch_delete(repo, "master", GIT_BRANCH_LOCAL)); +} + +void test_refs_branches_delete__can_not_delete_a_branch_if_HEAD_is_missing(void) +{ + git_reference *head; + + cl_git_pass(git_reference_lookup(&head, repo, GIT_HEAD_FILE)); + git_reference_delete(head); + + cl_git_fail(git_branch_delete(repo, "br2", GIT_BRANCH_LOCAL)); +} + +void test_refs_branches_delete__can_delete_a_branch_pointed_at_by_detached_HEAD(void) +{ + git_reference *master, *head; + + /* Detach HEAD and make it target the commit that "master" points to */ + cl_git_pass(git_reference_lookup(&master, repo, "refs/heads/master")); + cl_git_pass(git_reference_create_oid(&head, repo, "HEAD", git_reference_oid(master), 1)); + git_reference_free(head); + git_reference_free(master); + + cl_git_pass(git_branch_delete(repo, "master", GIT_BRANCH_LOCAL)); +} + +void test_refs_branches_delete__can_delete_a_local_branch(void) +{ + cl_git_pass(git_branch_delete(repo, "br2", GIT_BRANCH_LOCAL)); +} + +void test_refs_branches_delete__can_delete_a_remote_branch(void) +{ + cl_git_pass(git_branch_delete(repo, "nulltoken/master", GIT_BRANCH_REMOTE)); +} diff --git a/tests-clar/refs/branches/listall.c b/tests-clar/refs/branches/listall.c new file mode 100644 index 000000000..391177368 --- /dev/null +++ b/tests-clar/refs/branches/listall.c @@ -0,0 +1,49 @@ +#include "clar_libgit2.h" +#include "refs.h" +#include "branch.h" + +static git_repository *repo; +static git_strarray branch_list; +static git_reference *fake_remote; + +void test_refs_branches_listall__initialize(void) +{ + git_oid id; + + cl_fixture_sandbox("testrepo.git"); + cl_git_pass(git_repository_open(&repo, "testrepo.git")); + + cl_git_pass(git_oid_fromstr(&id, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644")); + cl_git_pass(git_reference_create_oid(&fake_remote, repo, "refs/remotes/nulltoken/master", &id, 0)); +} + +void test_refs_branches_listall__cleanup(void) +{ + git_strarray_free(&branch_list); + git_reference_free(fake_remote); + git_repository_free(repo); + + cl_fixture_cleanup("testrepo.git"); +} + +static void assert_retrieval(unsigned int flags, unsigned int expected_count) +{ + cl_git_pass(git_branch_list(&branch_list, repo, flags)); + + cl_assert(branch_list.count == expected_count); +} + +void test_refs_branches_listall__retrieve_all_branches(void) +{ + assert_retrieval(GIT_BRANCH_LOCAL | GIT_BRANCH_REMOTE, 6 + 1); +} + +void test_refs_branches_listall__retrieve_remote_branches(void) +{ + assert_retrieval(GIT_BRANCH_REMOTE, 1); +} + +void test_refs_branches_listall__retrieve_local_branches(void) +{ + assert_retrieval(GIT_BRANCH_LOCAL, 6); +} diff --git a/tests-clar/refs/branches/move.c b/tests-clar/refs/branches/move.c new file mode 100644 index 000000000..208bb460e --- /dev/null +++ b/tests-clar/refs/branches/move.c @@ -0,0 +1,62 @@ +#include "clar_libgit2.h" +#include "branch.h" + +static git_repository *repo; + +void test_refs_branches_move__initialize(void) +{ + cl_fixture_sandbox("testrepo.git"); + cl_git_pass(git_repository_open(&repo, "testrepo.git")); +} + +void test_refs_branches_move__cleanup(void) +{ + git_repository_free(repo); + + cl_fixture_cleanup("testrepo.git"); +} + +#define NEW_BRANCH_NAME "new-branch-on-the-block" + +void test_refs_branches_move__can_move_a_local_branch(void) +{ + cl_git_pass(git_branch_move(repo, "br2", NEW_BRANCH_NAME, 0)); +} + +void test_refs_branches_move__can_move_a_local_branch_to_a_different_namespace(void) +{ + /* Downward */ + cl_git_pass(git_branch_move(repo, "br2", "somewhere/" NEW_BRANCH_NAME, 0)); + + /* Upward */ + cl_git_pass(git_branch_move(repo, "somewhere/" NEW_BRANCH_NAME, "br2", 0)); +} + +void test_refs_branches_move__can_move_a_local_branch_to_a_partially_colliding_namespace(void) +{ + /* Downward */ + cl_git_pass(git_branch_move(repo, "br2", "br2/" NEW_BRANCH_NAME, 0)); + + /* Upward */ + cl_git_pass(git_branch_move(repo, "br2/" NEW_BRANCH_NAME, "br2", 0)); +} + +void test_refs_branches_move__can_not_move_a_branch_if_its_destination_name_collide_with_an_existing_one(void) +{ + cl_git_fail(git_branch_move(repo, "br2", "master", 0)); +} + +void test_refs_branches_move__can_not_move_a_non_existing_branch(void) +{ + cl_git_fail(git_branch_move(repo, "i-am-no-branch", NEW_BRANCH_NAME, 0)); +} + +void test_refs_branches_move__can_force_move_over_an_existing_branch(void) +{ + cl_git_pass(git_branch_move(repo, "br2", "master", 1)); +} + +void test_refs_branches_move__can_not_move_a_branch_through_its_canonical_name(void) +{ + cl_git_fail(git_branch_move(repo, "refs/heads/br2", NEW_BRANCH_NAME, 1)); +} diff --git a/tests-clar/refs/create.c b/tests-clar/refs/create.c index 3674022c0..dde4c5745 100644 --- a/tests-clar/refs/create.c +++ b/tests-clar/refs/create.c @@ -42,7 +42,7 @@ void test_refs_create__symbolic(void) cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, new_head_tracker)); cl_assert(git_reference_type(looked_up_ref) & GIT_REF_SYMBOLIC); cl_assert(git_reference_is_packed(looked_up_ref) == 0); - cl_assert_strequal(looked_up_ref->name, new_head_tracker); + cl_assert_equal_s(looked_up_ref->name, new_head_tracker); /* ...peeled.. */ cl_git_pass(git_reference_resolve(&resolved_ref, looked_up_ref)); @@ -112,7 +112,7 @@ void test_refs_create__oid(void) cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, new_head)); cl_assert(git_reference_type(looked_up_ref) & GIT_REF_OID); cl_assert(git_reference_is_packed(looked_up_ref) == 0); - cl_assert_strequal(looked_up_ref->name, new_head); + cl_assert_equal_s(looked_up_ref->name, new_head); /* ...and that it points to the current master tip */ cl_assert(git_oid_cmp(&id, git_reference_oid(looked_up_ref)) == 0); diff --git a/tests-clar/refs/delete.c b/tests-clar/refs/delete.c index cc3b93653..912f41456 100644 --- a/tests-clar/refs/delete.c +++ b/tests-clar/refs/delete.c @@ -31,7 +31,7 @@ void test_refs_delete__packed_loose(void) /* Ensure the loose reference exists on the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, packed_test_head_name)); - cl_git_pass(git_path_exists(temp_path.ptr)); + cl_assert(git_path_exists(temp_path.ptr)); /* Lookup the reference */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_test_head_name)); @@ -46,7 +46,7 @@ void test_refs_delete__packed_loose(void) cl_git_fail(git_reference_lookup(&another_looked_up_ref, g_repo, packed_test_head_name)); /* Ensure the loose reference doesn't exist any longer on the file system */ - cl_git_pass(!git_path_exists(temp_path.ptr)); + cl_assert(!git_path_exists(temp_path.ptr)); git_reference_free(another_looked_up_ref); git_buf_free(&temp_path); diff --git a/tests-clar/refs/lookup.c b/tests-clar/refs/lookup.c new file mode 100644 index 000000000..ab563ac2b --- /dev/null +++ b/tests-clar/refs/lookup.c @@ -0,0 +1,42 @@ +#include "clar_libgit2.h" +#include "refs.h" + +static git_repository *g_repo; + +void test_refs_lookup__initialize(void) +{ + g_repo = cl_git_sandbox_init("testrepo.git"); +} + +void test_refs_lookup__cleanup(void) +{ + cl_git_sandbox_cleanup(); +} + +void test_refs_lookup__with_resolve(void) +{ + git_reference *a, *b, *temp; + + cl_git_pass(git_reference_lookup(&temp, g_repo, "HEAD")); + cl_git_pass(git_reference_resolve(&a, temp)); + git_reference_free(temp); + + cl_git_pass(git_reference_lookup_resolved(&b, g_repo, "HEAD", 5)); + cl_assert(git_reference_cmp(a, b) == 0); + git_reference_free(b); + + cl_git_pass(git_reference_lookup_resolved(&b, g_repo, "head-tracker", 5)); + cl_assert(git_reference_cmp(a, b) == 0); + git_reference_free(b); + + git_reference_free(a); +} + +void test_refs_lookup__oid(void) +{ + git_oid tag, expected; + + cl_git_pass(git_reference_name_to_oid(&tag, g_repo, "refs/tags/point_to_blob")); + cl_git_pass(git_oid_fromstr(&expected, "1385f264afb75a56a5bec74243be9b367ba4ca08")); + cl_assert(git_oid_cmp(&tag, &expected) == 0); +} diff --git a/tests-clar/refs/overwrite.c b/tests-clar/refs/overwrite.c index 5c6fd54bd..410e39a84 100644 --- a/tests-clar/refs/overwrite.c +++ b/tests-clar/refs/overwrite.c @@ -34,7 +34,7 @@ void test_refs_overwrite__symbolic(void) /* Ensure it points to the right place*/ cl_git_pass(git_reference_lookup(&ref, g_repo, ref_name)); cl_assert(git_reference_type(ref) & GIT_REF_SYMBOLIC); - cl_assert_strequal(git_reference_target(ref), ref_branch_name); + cl_assert_equal_s(git_reference_target(ref), ref_branch_name); git_reference_free(ref); /* Ensure we can't create it unless we force it to */ @@ -45,7 +45,7 @@ void test_refs_overwrite__symbolic(void) /* Ensure it points to the right place */ cl_git_pass(git_reference_lookup(&ref, g_repo, ref_name)); cl_assert(git_reference_type(ref) & GIT_REF_SYMBOLIC); - cl_assert_strequal(git_reference_target(ref), ref_master_name); + cl_assert_equal_s(git_reference_target(ref), ref_master_name); git_reference_free(ref); git_reference_free(branch_ref); @@ -103,7 +103,7 @@ void test_refs_overwrite__object_id_with_symbolic(void) /* Ensure it points to the right place */ cl_git_pass(git_reference_lookup(&ref, g_repo, ref_name)); cl_assert(git_reference_type(ref) & GIT_REF_SYMBOLIC); - cl_assert_strequal(git_reference_target(ref), ref_master_name); + cl_assert_equal_s(git_reference_target(ref), ref_master_name); git_reference_free(ref); } diff --git a/tests-clar/refs/pack.c b/tests-clar/refs/pack.c index dca83d1ef..305594c28 100644 --- a/tests-clar/refs/pack.c +++ b/tests-clar/refs/pack.c @@ -39,7 +39,7 @@ void test_refs_pack__loose(void) /* Ensure a known loose ref can be looked up */ cl_git_pass(git_reference_lookup(&reference, g_repo, loose_tag_ref_name)); cl_assert(git_reference_is_packed(reference) == 0); - cl_assert_strequal(reference->name, loose_tag_ref_name); + cl_assert_equal_s(reference->name, loose_tag_ref_name); git_reference_free(reference); /* @@ -51,16 +51,16 @@ void test_refs_pack__loose(void) /* Ensure the packed-refs file exists */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, GIT_PACKEDREFS_FILE)); - cl_git_pass(git_path_exists(temp_path.ptr)); + cl_assert(git_path_exists(temp_path.ptr)); /* Ensure the known ref can still be looked up but is now packed */ cl_git_pass(git_reference_lookup(&reference, g_repo, loose_tag_ref_name)); cl_assert(git_reference_is_packed(reference)); - cl_assert_strequal(reference->name, loose_tag_ref_name); + cl_assert_equal_s(reference->name, loose_tag_ref_name); /* Ensure the known ref has been removed from the loose folder structure */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, loose_tag_ref_name)); - cl_git_pass(!git_path_exists(temp_path.ptr)); + cl_assert(!git_path_exists(temp_path.ptr)); git_reference_free(reference); git_buf_free(&temp_path); diff --git a/tests-clar/refs/read.c b/tests-clar/refs/read.c index c7e88abe4..d7111b232 100644 --- a/tests-clar/refs/read.c +++ b/tests-clar/refs/read.c @@ -34,7 +34,7 @@ void test_refs_read__loose_tag(void) cl_git_pass(git_reference_lookup(&reference, g_repo, loose_tag_ref_name)); cl_assert(git_reference_type(reference) & GIT_REF_OID); cl_assert(git_reference_is_packed(reference) == 0); - cl_assert_strequal(reference->name, loose_tag_ref_name); + cl_assert_equal_s(reference->name, loose_tag_ref_name); cl_git_pass(git_object_lookup(&object, g_repo, git_reference_oid(reference), GIT_OBJ_ANY)); cl_assert(object != NULL); @@ -42,7 +42,7 @@ void test_refs_read__loose_tag(void) /* Ensure the name of the tag matches the name of the reference */ cl_git_pass(git_buf_joinpath(&ref_name_from_tag_name, GIT_REFS_TAGS_DIR, git_tag_name((git_tag *)object))); - cl_assert_strequal(ref_name_from_tag_name.ptr, loose_tag_ref_name); + cl_assert_equal_s(ref_name_from_tag_name.ptr, loose_tag_ref_name); git_buf_free(&ref_name_from_tag_name); git_object_free(object); @@ -71,7 +71,7 @@ void test_refs_read__symbolic(void) cl_git_pass(git_reference_lookup(&reference, g_repo, GIT_HEAD_FILE)); cl_assert(git_reference_type(reference) & GIT_REF_SYMBOLIC); cl_assert(git_reference_is_packed(reference) == 0); - cl_assert_strequal(reference->name, GIT_HEAD_FILE); + cl_assert_equal_s(reference->name, GIT_HEAD_FILE); cl_git_pass(git_reference_resolve(&resolved_ref, reference)); cl_assert(git_reference_type(resolved_ref) == GIT_REF_OID); @@ -99,7 +99,7 @@ void test_refs_read__nested_symbolic(void) cl_git_pass(git_reference_lookup(&reference, g_repo, head_tracker_sym_ref_name)); cl_assert(git_reference_type(reference) & GIT_REF_SYMBOLIC); cl_assert(git_reference_is_packed(reference) == 0); - cl_assert_strequal(reference->name, head_tracker_sym_ref_name); + cl_assert_equal_s(reference->name, head_tracker_sym_ref_name); cl_git_pass(git_reference_resolve(&resolved_ref, reference)); cl_assert(git_reference_type(resolved_ref) == GIT_REF_OID); @@ -167,7 +167,7 @@ void test_refs_read__packed(void) cl_git_pass(git_reference_lookup(&reference, g_repo, packed_head_name)); cl_assert(git_reference_type(reference) & GIT_REF_OID); cl_assert(git_reference_is_packed(reference)); - cl_assert_strequal(reference->name, packed_head_name); + cl_assert_equal_s(reference->name, packed_head_name); cl_git_pass(git_object_lookup(&object, g_repo, git_reference_oid(reference), GIT_OBJ_ANY)); cl_assert(object != NULL); @@ -188,7 +188,7 @@ void test_refs_read__loose_first(void) cl_git_pass(git_reference_lookup(&reference, g_repo, packed_test_head_name)); cl_assert(git_reference_type(reference) & GIT_REF_OID); cl_assert(git_reference_is_packed(reference) == 0); - cl_assert_strequal(reference->name, packed_test_head_name); + cl_assert_equal_s(reference->name, packed_test_head_name); git_reference_free(reference); } diff --git a/tests-clar/refs/reflog.c b/tests-clar/refs/reflog.c index 8000e4851..1bc51b2b8 100644 --- a/tests-clar/refs/reflog.c +++ b/tests-clar/refs/reflog.c @@ -16,8 +16,8 @@ static git_repository *g_repo; static void assert_signature(git_signature *expected, git_signature *actual) { cl_assert(actual); - cl_assert_strequal(expected->name, actual->name); - cl_assert_strequal(expected->email, actual->email); + cl_assert_equal_s(expected->name, actual->name); + cl_assert_equal_s(expected->email, actual->email); cl_assert(expected->when.offset == actual->when.offset); cl_assert(expected->when.time == actual->when.time); } @@ -73,18 +73,18 @@ void test_refs_reflog__write_then_read(void) entry = (git_reflog_entry *)git_vector_get(&reflog->entries, 0); assert_signature(committer, entry->committer); git_oid_tostr(oid_str, GIT_OID_HEXSZ+1, &entry->oid_old); - cl_assert_strequal("0000000000000000000000000000000000000000", oid_str); + cl_assert_equal_s("0000000000000000000000000000000000000000", oid_str); git_oid_tostr(oid_str, GIT_OID_HEXSZ+1, &entry->oid_cur); - cl_assert_strequal(current_master_tip, oid_str); + cl_assert_equal_s(current_master_tip, oid_str); cl_assert(entry->msg == NULL); entry = (git_reflog_entry *)git_vector_get(&reflog->entries, 1); assert_signature(committer, entry->committer); git_oid_tostr(oid_str, GIT_OID_HEXSZ+1, &entry->oid_old); - cl_assert_strequal(current_master_tip, oid_str); + cl_assert_equal_s(current_master_tip, oid_str); git_oid_tostr(oid_str, GIT_OID_HEXSZ+1, &entry->oid_cur); - cl_assert_strequal(current_master_tip, oid_str); - cl_assert_strequal(commit_msg, entry->msg); + cl_assert_equal_s(current_master_tip, oid_str); + cl_assert_equal_s(commit_msg, entry->msg); git_signature_free(committer); git_reflog_free(reflog); diff --git a/tests-clar/refs/rename.c b/tests-clar/refs/rename.c index 8e7c93c97..4b917ef6d 100644 --- a/tests-clar/refs/rename.c +++ b/tests-clar/refs/rename.c @@ -38,7 +38,7 @@ void test_refs_rename__loose(void) /* Ensure the ref doesn't exist on the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, new_name)); - cl_git_pass(!git_path_exists(temp_path.ptr)); + cl_assert(!git_path_exists(temp_path.ptr)); /* Retrieval of the reference to rename */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, loose_tag_ref_name)); @@ -48,14 +48,14 @@ void test_refs_rename__loose(void) /* Now that the reference is renamed... */ cl_git_pass(git_reference_rename(looked_up_ref, new_name, 0)); - cl_assert_strequal(looked_up_ref->name, new_name); + cl_assert_equal_s(looked_up_ref->name, new_name); /* ...It can't be looked-up with the old name... */ cl_git_fail(git_reference_lookup(&another_looked_up_ref, g_repo, loose_tag_ref_name)); /* ...but the new name works ok... */ cl_git_pass(git_reference_lookup(&another_looked_up_ref, g_repo, new_name)); - cl_assert_strequal(another_looked_up_ref->name, new_name); + cl_assert_equal_s(another_looked_up_ref->name, new_name); /* .. the ref is still loose... */ cl_assert(git_reference_is_packed(another_looked_up_ref) == 0); @@ -63,7 +63,7 @@ void test_refs_rename__loose(void) /* ...and the ref can be found in the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, new_name)); - cl_git_pass(git_path_exists(temp_path.ptr)); + cl_assert(git_path_exists(temp_path.ptr)); git_reference_free(looked_up_ref); git_reference_free(another_looked_up_ref); @@ -79,7 +79,7 @@ void test_refs_rename__packed(void) /* Ensure the ref doesn't exist on the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, packed_head_name)); - cl_git_pass(!git_path_exists(temp_path.ptr)); + cl_assert(!git_path_exists(temp_path.ptr)); /* The reference can however be looked-up... */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_head_name)); @@ -89,14 +89,14 @@ void test_refs_rename__packed(void) /* Now that the reference is renamed... */ cl_git_pass(git_reference_rename(looked_up_ref, brand_new_name, 0)); - cl_assert_strequal(looked_up_ref->name, brand_new_name); + cl_assert_equal_s(looked_up_ref->name, brand_new_name); /* ...It can't be looked-up with the old name... */ cl_git_fail(git_reference_lookup(&another_looked_up_ref, g_repo, packed_head_name)); /* ...but the new name works ok... */ cl_git_pass(git_reference_lookup(&another_looked_up_ref, g_repo, brand_new_name)); - cl_assert_strequal(another_looked_up_ref->name, brand_new_name); + cl_assert_equal_s(another_looked_up_ref->name, brand_new_name); /* .. the ref is no longer packed... */ cl_assert(git_reference_is_packed(another_looked_up_ref) == 0); @@ -104,7 +104,7 @@ void test_refs_rename__packed(void) /* ...and the ref now happily lives in the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, brand_new_name)); - cl_git_pass(git_path_exists(temp_path.ptr)); + cl_assert(git_path_exists(temp_path.ptr)); git_reference_free(looked_up_ref); git_reference_free(another_looked_up_ref); @@ -120,7 +120,7 @@ void test_refs_rename__packed_doesnt_pack_others(void) /* Ensure the other reference exists on the file system */ cl_git_pass(git_buf_joinpath(&temp_path, g_repo->path_repository, packed_test_head_name)); - cl_git_pass(git_path_exists(temp_path.ptr)); + cl_assert(git_path_exists(temp_path.ptr)); /* Lookup the other reference */ cl_git_pass(git_reference_lookup(&another_looked_up_ref, g_repo, packed_test_head_name)); @@ -145,7 +145,7 @@ void test_refs_rename__packed_doesnt_pack_others(void) cl_assert(git_reference_is_packed(another_looked_up_ref) == 0); /* Ensure the other ref still exists on the file system */ - cl_git_pass(git_path_exists(temp_path.ptr)); + cl_assert(git_path_exists(temp_path.ptr)); git_reference_free(looked_up_ref); git_reference_free(another_looked_up_ref); @@ -166,7 +166,7 @@ void test_refs_rename__name_collision(void) /* Failure to rename it hasn't corrupted its state */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_head_name)); - cl_assert_strequal(looked_up_ref->name, packed_head_name); + cl_assert_equal_s(looked_up_ref->name, packed_head_name); git_reference_free(looked_up_ref); } @@ -188,7 +188,7 @@ void test_refs_rename__invalid_name(void) /* Failure to rename it hasn't corrupted its state */ git_reference_free(looked_up_ref); cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_test_head_name)); - cl_assert_strequal(looked_up_ref->name, packed_test_head_name); + cl_assert_equal_s(looked_up_ref->name, packed_test_head_name); git_reference_free(looked_up_ref); } @@ -209,7 +209,7 @@ void test_refs_rename__force_loose_packed(void) /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, packed_test_head_name)); - cl_assert_strequal(looked_up_ref->name, packed_test_head_name); + cl_assert_equal_s(looked_up_ref->name, packed_test_head_name); cl_assert(!git_oid_cmp(&oid, git_reference_oid(looked_up_ref))); git_reference_free(looked_up_ref); @@ -233,7 +233,7 @@ void test_refs_rename__force_loose(void) /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, "refs/heads/test")); - cl_assert_strequal(looked_up_ref->name, "refs/heads/test"); + cl_assert_equal_s(looked_up_ref->name, "refs/heads/test"); cl_assert(!git_oid_cmp(&oid, git_reference_oid(looked_up_ref))); git_reference_free(looked_up_ref); @@ -298,7 +298,7 @@ void test_refs_rename__prefix(void) /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name_new)); - cl_assert_strequal(looked_up_ref->name, ref_two_name_new); + cl_assert_equal_s(looked_up_ref->name, ref_two_name_new); git_reference_free(looked_up_ref); cl_git_fail(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name)); @@ -331,7 +331,7 @@ void test_refs_rename__move_up(void) /* Check we actually renamed it */ cl_git_pass(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name)); - cl_assert_strequal(looked_up_ref->name, ref_two_name); + cl_assert_equal_s(looked_up_ref->name, ref_two_name); git_reference_free(looked_up_ref); cl_git_fail(git_reference_lookup(&looked_up_ref, g_repo, ref_two_name_new)); git_reference_free(ref); diff --git a/tests-clar/refs/unicode.c b/tests-clar/refs/unicode.c new file mode 100644 index 000000000..889c85666 --- /dev/null +++ b/tests-clar/refs/unicode.c @@ -0,0 +1,42 @@ +#include "clar_libgit2.h" + +static git_repository *repo; + +void test_refs_unicode__initialize(void) +{ + cl_fixture_sandbox("testrepo.git"); + + cl_git_pass(git_repository_open(&repo, "testrepo.git")); +} + +void test_refs_unicode__cleanup(void) +{ + git_repository_free(repo); + cl_fixture_cleanup("testrepo.git"); +} + +void test_refs_unicode__create_and_lookup(void) +{ + git_reference *ref0, *ref1, *ref2; + git_repository *repo2; + + const char *REFNAME = "refs/heads/" "\305" "ngstr" "\366" "m"; + const char *master = "refs/heads/master"; + + /* Create the reference */ + cl_git_pass(git_reference_lookup(&ref0, repo, master)); + cl_git_pass(git_reference_create_oid(&ref1, repo, REFNAME, git_reference_oid(ref0), 0)); + cl_assert(strcmp(REFNAME, git_reference_name(ref1)) == 0); + + /* Lookup the reference in a different instance of the repository */ + cl_git_pass(git_repository_open(&repo2, "testrepo.git")); + cl_git_pass(git_reference_lookup(&ref2, repo2, REFNAME)); + + cl_assert(git_oid_cmp(git_reference_oid(ref1), git_reference_oid(ref2)) == 0); + cl_assert(strcmp(REFNAME, git_reference_name(ref2)) == 0); + + git_reference_free(ref0); + git_reference_free(ref1); + git_reference_free(ref2); + git_repository_free(repo2); +} |