]> git.proxmox.com Git - libgit2.git/blobdiff - tests/submodule/lookup.c
New upstream version 1.3.0+dfsg.1
[libgit2.git] / tests / submodule / lookup.c
index 6f7506d2ce5e9f62dfaf2e0ef88131b91ce2c9af..f49ebb4bdc60b4eec16844c4516120329125a1a4 100644 (file)
@@ -42,6 +42,46 @@ void test_submodule_lookup__simple_lookup(void)
        assert_submodule_exists(g_repo, "sm_added_and_uncommited/");
 }
 
+void test_submodule_lookup__can_be_dupped(void)
+{
+       git_submodule *sm;
+       git_submodule *sm_duplicate;
+       const char *oid = "480095882d281ed676fe5b863569520e54a7d5c0";
+
+       /* Check original */
+       cl_git_pass(git_submodule_lookup(&sm, g_repo, "sm_unchanged"));
+       cl_assert(git_submodule_owner(sm) == g_repo);
+       cl_assert_equal_s("sm_unchanged", git_submodule_name(sm));
+       cl_assert(git__suffixcmp(git_submodule_path(sm), "sm_unchanged") == 0);
+       cl_assert(git__suffixcmp(git_submodule_url(sm), "/submod2_target") == 0);
+
+       cl_assert(git_oid_streq(git_submodule_index_id(sm), oid) == 0);
+       cl_assert(git_oid_streq(git_submodule_head_id(sm), oid) == 0);
+       cl_assert(git_oid_streq(git_submodule_wd_id(sm), oid) == 0);
+
+       cl_assert(git_submodule_ignore(sm) == GIT_SUBMODULE_IGNORE_NONE);
+       cl_assert(git_submodule_update_strategy(sm) == GIT_SUBMODULE_UPDATE_CHECKOUT);
+
+       /* Duplicate and free original */
+       cl_assert(git_submodule_dup(&sm_duplicate, sm) == 0);
+       git_submodule_free(sm);
+
+       /* Check duplicate */
+       cl_assert(git_submodule_owner(sm_duplicate) == g_repo);
+       cl_assert_equal_s("sm_unchanged", git_submodule_name(sm_duplicate));
+       cl_assert(git__suffixcmp(git_submodule_path(sm_duplicate), "sm_unchanged") == 0);
+       cl_assert(git__suffixcmp(git_submodule_url(sm_duplicate), "/submod2_target") == 0);
+
+       cl_assert(git_oid_streq(git_submodule_index_id(sm_duplicate), oid) == 0);
+       cl_assert(git_oid_streq(git_submodule_head_id(sm_duplicate), oid) == 0);
+       cl_assert(git_oid_streq(git_submodule_wd_id(sm_duplicate), oid) == 0);
+
+       cl_assert(git_submodule_ignore(sm_duplicate) == GIT_SUBMODULE_IGNORE_NONE);
+       cl_assert(git_submodule_update_strategy(sm_duplicate) == GIT_SUBMODULE_UPDATE_CHECKOUT);
+
+       git_submodule_free(sm_duplicate);
+}
+
 void test_submodule_lookup__accessors(void)
 {
        git_submodule *sm;