diff options
| author | Etienne Samson <samson.etienne@gmail.com> | 2018-06-20 02:26:50 +0200 |
|---|---|---|
| committer | Etienne Samson <samson.etienne@gmail.com> | 2018-11-02 14:58:02 +0100 |
| commit | 10fa2dd61c383e1d920a78cc12aa72f6e0bf7b65 (patch) | |
| tree | 5b4bf756bfe5c11811f1ac81d7d4f8fdf08ed351 /tests/remote/create.c | |
| parent | 798be87ee5fb8a8bd10ffac158ab6bd2fa84f2af (diff) | |
| download | libgit2-10fa2dd61c383e1d920a78cc12aa72f6e0bf7b65.tar.gz | |
tests: consolidate all remote creation tests in one test suite
Diffstat (limited to 'tests/remote/create.c')
| -rw-r--r-- | tests/remote/create.c | 73 |
1 files changed, 70 insertions, 3 deletions
diff --git a/tests/remote/create.c b/tests/remote/create.c index 0aa0f8355..79e5d3f86 100644 --- a/tests/remote/create.c +++ b/tests/remote/create.c @@ -2,7 +2,17 @@ static git_repository *_repo; static git_config *_config; -static char url[] = "http://github.com/libgit2/libgit2.git"; + +#define TEST_URL "http://github.com/libgit2/libgit2.git" + +#define cl_git_assert_cannot_create_remote(expected, creation_expr) \ + do { \ + git_remote *r = NULL; \ + int res = ((creation_expr)); \ + cl_git_fail_with(expected, res); \ + cl_assert_equal_p(r, NULL); \ + } while (0); + void test_remote_create__initialize(void) { @@ -27,11 +37,68 @@ void test_remote_create__manual(void) { git_remote *remote; cl_git_pass(git_config_set_string(_config, "remote.origin.fetch", "+refs/heads/*:refs/remotes/origin/*")); - cl_git_pass(git_config_set_string(_config, "remote.origin.url", url)); + cl_git_pass(git_config_set_string(_config, "remote.origin.url", TEST_URL)); cl_git_pass(git_remote_lookup(&remote, _repo, "origin")); cl_assert_equal_s(git_remote_name(remote), "origin"); - cl_assert_equal_s(git_remote_url(remote), url); + cl_assert_equal_s(git_remote_url(remote), TEST_URL); + + git_remote_free(remote); +} + +void test_remote_create__named(void) +{ + git_remote *remote; + git_config *cfg; + const char *cfg_val; + cl_git_pass(git_remote_create(&remote, _repo, "valid-name", TEST_URL)); + + cl_assert_equal_s(git_remote_name(remote), "valid-name"); + cl_assert_equal_s(git_remote_url(remote), TEST_URL); + + cl_git_pass(git_repository_config_snapshot(&cfg, _repo)); + + cl_git_pass(git_config_get_string(&cfg_val, cfg, "remote.valid-name.fetch")); + cl_assert_equal_s(cfg_val, "+refs/heads/*:refs/remotes/valid-name/*"); + + cl_git_pass(git_config_get_string(&cfg_val, cfg, "remote.valid-name.url")); + cl_assert_equal_s(cfg_val, TEST_URL); + + git_config_free(cfg); + git_remote_free(remote); +} + +void test_remote_create__named_fail_on_invalid_name(void) +{ + cl_git_assert_cannot_create_remote(GIT_EINVALIDSPEC, git_remote_create(&r, _repo, NULL, TEST_URL)); + cl_git_assert_cannot_create_remote(GIT_EINVALIDSPEC, git_remote_create(&r, _repo, "Inv@{id", TEST_URL)); + cl_git_assert_cannot_create_remote(GIT_EINVALIDSPEC, git_remote_create(&r, _repo, "", TEST_URL)); + cl_git_assert_cannot_create_remote(GIT_EINVALIDSPEC, git_remote_create(&r, _repo, "/", TEST_URL)); + cl_git_assert_cannot_create_remote(GIT_EINVALIDSPEC, git_remote_create(&r, _repo, "//", TEST_URL)); + cl_git_assert_cannot_create_remote(GIT_EINVALIDSPEC, git_remote_create(&r, _repo, ".lock", TEST_URL)); + cl_git_assert_cannot_create_remote(GIT_EINVALIDSPEC, git_remote_create(&r, _repo, "a.lock", TEST_URL)); +} + +void test_remote_create__named_fail_on_invalid_url(void) +{ + cl_git_assert_cannot_create_remote(GIT_ERROR, git_remote_create(&r, _repo, "bad-url", "")); +} + +void test_remote_create__named_fail_on_conflicting_name(void) +{ + cl_git_assert_cannot_create_remote(GIT_EEXISTS, git_remote_create(&r, _repo, "test", TEST_URL)); +} + +void test_remote_create__with_fetchspec(void) +{ + git_remote *remote; + git_strarray array; + + cl_git_pass(git_remote_create_with_fetchspec(&remote, _repo, "test-new", "git://github.com/libgit2/libgit2", "+refs/*:refs/*")); + cl_git_pass(git_remote_get_fetch_refspecs(&array, remote)); + cl_assert_equal_s("+refs/*:refs/*", array.strings[0]); + cl_assert_equal_i(1, array.count); + git_strarray_free(&array); git_remote_free(remote); } |
