diff options
author | Martin Kühl <martin.kuehl@posteo.net> | 2021-10-28 14:15:41 +0200 |
---|---|---|
committer | Martin Kühl <martin.kuehl@posteo.net> | 2021-11-11 21:45:47 +0100 |
commit | 7891660a1299a3e22fe722634d493e3353eb8cae (patch) | |
tree | 01ee9eee4988618eef5cfd75848c4a5657105dfb | |
parent | ceddeed80a21f0d3a3396d90dd61fada361ed745 (diff) | |
download | libgit2-7891660a1299a3e22fe722634d493e3353eb8cae.tar.gz |
update remote/insteadof tests
we want to test:
- an anonymous repo (a url)
- a named repo with a url
- a named repo with a url and pushurl
and for each of these matching configuration:
- only insteadOf
- only pushInsteadOf
- both insteadOf and pushInsteadOf
this change adds test cases for all of these combinations.
-rw-r--r-- | tests/remote/insteadof.c | 110 | ||||
-rw-r--r-- | tests/resources/testrepo2/.gitted/config | 41 |
2 files changed, 128 insertions, 23 deletions
diff --git a/tests/remote/insteadof.c b/tests/remote/insteadof.c index 05d4757cf..c39df4be7 100644 --- a/tests/remote/insteadof.c +++ b/tests/remote/insteadof.c @@ -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"); +} diff --git a/tests/resources/testrepo2/.gitted/config b/tests/resources/testrepo2/.gitted/config index 4af067f04..6966b8a5d 100644 --- a/tests/resources/testrepo2/.gitted/config +++ b/tests/resources/testrepo2/.gitted/config @@ -8,19 +8,42 @@ [remote "origin"] url = https://github.com/libgit2/false.git fetch = +refs/heads/*:refs/remotes/origin/* -[remote "insteadof-test"] - url = http://example.com/libgit2/libgit2 - pushurl = http://github.com/libgit2/libgit2 +[remote "insteadof-url-fetch"] + url = http://example.com/url/fetch/libgit2 + fetch = +refs/heads/*:refs/remotes/test/* +[remote "insteadof-url-push"] + url = http://example.com/url/push/libgit2 + fetch = +refs/heads/*:refs/remotes/test/* +[remote "insteadof-url-both"] + url = http://example.com/url/both/libgit2 + fetch = +refs/heads/*:refs/remotes/test/* +[remote "insteadof-pushurl-fetch"] + url = http://example.com/url/fetch/libgit2 + pushurl = http://example.com/url/fetch/libgit2-push + fetch = +refs/heads/*:refs/remotes/test/* +[remote "insteadof-pushurl-push"] + url = http://example.com/url/push/libgit2 + pushurl = http://example.com/url/push/libgit2-push + fetch = +refs/heads/*:refs/remotes/test/* +[remote "insteadof-pushurl-both"] + url = http://example.com/url/both/libgit2 + pushurl = http://example.com/url/both/libgit2-push fetch = +refs/heads/*:refs/remotes/test/* [branch "master"] remote = origin merge = refs/heads/master rebase = true [url "longer-non-prefix-match"] - insteadOf = ttp://example.com/li + # not applicable because it's not a prefix match + insteadOf = ttp://example.com/url/fetch/li [url "shorter-prefix"] - insteadOf = http://example.co -[url "http://github.com"] - insteadOf = http://example.com -[url "git@github.com:"] - pushInsteadOf = http://github.com/ + # not applicable because the matched prefix is shorter + insteadOf = http://example.com/url/fe +[url "http://github.com/url/fetch"] + insteadOf = http://example.com/url/fetch +[url "http://github.com/url/both"] + insteadOf = http://example.com/url/both +[url "git@github.com:url/push"] + pushInsteadOf = http://example.com/url/push +[url "git@github.com:url/both"] + pushInsteadOf = http://example.com/url/both |