]> git.proxmox.com Git - libgit2.git/blobdiff - tests/remote/insteadof.c
New upstream version 1.4.3+dfsg.1
[libgit2.git] / tests / remote / insteadof.c
index 05d4757cf0c2c2d1ef2dd60503fac51001566af8..c39df4be7f2b2d825379eb8ac2751475eec51193 100644 (file)
@@ -4,7 +4,12 @@
 
 #define REPO_PATH "testrepo2/.gitted"
 #define REMOTE_ORIGIN "origin"
-#define REMOTE_INSTEADOF "insteadof-test"
+#define REMOTE_INSTEADOF_URL_FETCH "insteadof-url-fetch"
+#define REMOTE_INSTEADOF_URL_PUSH "insteadof-url-push"
+#define REMOTE_INSTEADOF_URL_BOTH "insteadof-url-both"
+#define REMOTE_INSTEADOF_PUSHURL_FETCH "insteadof-pushurl-fetch"
+#define REMOTE_INSTEADOF_PUSHURL_PUSH "insteadof-pushurl-push"
+#define REMOTE_INSTEADOF_PUSHURL_BOTH "insteadof-pushurl-both"
 
 static git_repository *g_repo;
 static git_remote *g_remote;
@@ -21,7 +26,7 @@ void test_remote_insteadof__cleanup(void)
        git_remote_free(g_remote);
 }
 
-void test_remote_insteadof__url_insteadof_not_applicable(void)
+void test_remote_insteadof__not_applicable(void)
 {
        cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
        cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_ORIGIN));
@@ -29,44 +34,121 @@ void test_remote_insteadof__url_insteadof_not_applicable(void)
        cl_assert_equal_s(
                git_remote_url(g_remote),
                "https://github.com/libgit2/false.git");
+       cl_assert_equal_p(git_remote_pushurl(g_remote), NULL);
 }
 
-void test_remote_insteadof__url_insteadof_applicable(void)
+void test_remote_insteadof__url_insteadof_fetch(void)
 {
        cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
-       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF));
+       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF_URL_FETCH));
 
        cl_assert_equal_s(
            git_remote_url(g_remote),
-           "http://github.com/libgit2/libgit2");
+           "http://github.com/url/fetch/libgit2");
+       cl_assert_equal_p(git_remote_pushurl(g_remote), NULL);
 }
 
-void test_remote_insteadof__pushurl_insteadof_not_applicable(void)
+void test_remote_insteadof__url_insteadof_push(void)
 {
        cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
-       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_ORIGIN));
+       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF_URL_PUSH));
 
-       cl_assert_equal_p(git_remote_pushurl(g_remote), NULL);
+       cl_assert_equal_s(
+           git_remote_url(g_remote),
+           "http://example.com/url/push/libgit2");
+       cl_assert_equal_s(
+           git_remote_pushurl(g_remote),
+           "git@github.com:url/push/libgit2");
 }
 
-void test_remote_insteadof__pushurl_insteadof_applicable(void)
+void test_remote_insteadof__url_insteadof_both(void)
 {
        cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
-       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF));
+       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF_URL_BOTH));
 
+       cl_assert_equal_s(
+           git_remote_url(g_remote),
+           "http://github.com/url/both/libgit2");
        cl_assert_equal_s(
            git_remote_pushurl(g_remote),
-           "git@github.com:libgit2/libgit2");
+           "git@github.com:url/both/libgit2");
 }
 
-void test_remote_insteadof__anonymous_remote(void)
+void test_remote_insteadof__pushurl_insteadof_fetch(void)
+{
+       cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
+       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF_PUSHURL_FETCH));
+
+       cl_assert_equal_s(
+           git_remote_url(g_remote),
+           "http://github.com/url/fetch/libgit2");
+       cl_assert_equal_s(
+           git_remote_pushurl(g_remote),
+           "http://github.com/url/fetch/libgit2-push");
+}
+
+void test_remote_insteadof__pushurl_insteadof_push(void)
+{
+       cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
+       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF_PUSHURL_PUSH));
+
+       cl_assert_equal_s(
+           git_remote_url(g_remote),
+           "http://example.com/url/push/libgit2");
+       cl_assert_equal_s(
+           git_remote_pushurl(g_remote),
+           "http://example.com/url/push/libgit2-push");
+}
+
+void test_remote_insteadof__pushurl_insteadof_both(void)
+{
+       cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
+       cl_git_pass(git_remote_lookup(&g_remote, g_repo, REMOTE_INSTEADOF_PUSHURL_BOTH));
+
+       cl_assert_equal_s(
+           git_remote_url(g_remote),
+           "http://github.com/url/both/libgit2");
+       cl_assert_equal_s(
+           git_remote_pushurl(g_remote),
+           "http://github.com/url/both/libgit2-push");
+}
+
+void test_remote_insteadof__anonymous_remote_fetch(void)
 {
        cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
        cl_git_pass(git_remote_create_anonymous(&g_remote, g_repo,
-           "http://example.com/libgit2/libgit2"));
+           "http://example.com/url/fetch/libgit2"));
 
        cl_assert_equal_s(
            git_remote_url(g_remote),
-           "http://github.com/libgit2/libgit2");
+           "http://github.com/url/fetch/libgit2");
        cl_assert_equal_p(git_remote_pushurl(g_remote), NULL);
 }
+
+void test_remote_insteadof__anonymous_remote_push(void)
+{
+       cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
+       cl_git_pass(git_remote_create_anonymous(&g_remote, g_repo,
+           "http://example.com/url/push/libgit2"));
+
+       cl_assert_equal_s(
+           git_remote_url(g_remote),
+           "http://example.com/url/push/libgit2");
+       cl_assert_equal_s(
+           git_remote_pushurl(g_remote),
+           "git@github.com:url/push/libgit2");
+}
+
+void test_remote_insteadof__anonymous_remote_both(void)
+{
+       cl_git_pass(git_repository_open(&g_repo, cl_fixture(REPO_PATH)));
+       cl_git_pass(git_remote_create_anonymous(&g_remote, g_repo,
+           "http://example.com/url/both/libgit2"));
+
+       cl_assert_equal_s(
+           git_remote_url(g_remote),
+           "http://github.com/url/both/libgit2");
+       cl_assert_equal_s(
+           git_remote_pushurl(g_remote),
+           "git@github.com:url/both/libgit2");
+}