diff options
author | Vicent Martà <vicent@github.com> | 2013-01-12 14:14:14 +0400 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2013-01-12 14:14:14 +0400 |
commit | e2d2c6e57d122f381fb42b7df1c7a12819050490 (patch) | |
tree | 9cb5f2f9a9b4051cab640efb518f4fb0d87d3453 /tests-clar/clone | |
parent | 355dddbf08ade85584f94dfb0eb4df46cb504035 (diff) | |
parent | f31cae8be9e6005148b2e5bafcb46a0d4c77b467 (diff) |
Merge pull request #1222 from scunz/clone_branch
Switch to specified branch during clone
Diffstat (limited to 'tests-clar/clone')
-rw-r--r-- | tests-clar/clone/nonetwork.c | 54 |
1 files changed, 31 insertions, 23 deletions
diff --git a/tests-clar/clone/nonetwork.c b/tests-clar/clone/nonetwork.c index f241abf1f..953f79659 100644 --- a/tests-clar/clone/nonetwork.c +++ b/tests-clar/clone/nonetwork.c @@ -7,6 +7,8 @@ static git_clone_options g_options; static git_repository *g_repo; +static git_reference* g_ref; +static git_remote* g_remote; void test_clone_nonetwork__initialize(void) { @@ -27,6 +29,16 @@ void test_clone_nonetwork__cleanup(void) g_repo = NULL; } + if (g_ref) { + git_reference_free(g_ref); + g_ref = NULL; + } + + if (g_remote) { + git_remote_free(g_remote); + g_remote = NULL; + } + cl_fixture_cleanup("./foo"); } @@ -73,66 +85,51 @@ void test_clone_nonetwork__fail_with_already_existing_but_non_empty_directory(vo void test_clone_nonetwork__custom_origin_name(void) { - git_remote *remote; - g_options.remote_name = "my_origin"; cl_git_pass(git_clone(&g_repo, cl_git_fixture_url("testrepo.git"), "./foo", &g_options)); - cl_git_pass(git_remote_load(&remote, g_repo, "my_origin")); - - git_remote_free(remote); + cl_git_pass(git_remote_load(&g_remote, g_repo, "my_origin")); } void test_clone_nonetwork__custom_push_url(void) { - git_remote *remote; const char *url = "http://example.com"; g_options.pushurl = url; cl_git_pass(git_clone(&g_repo, cl_git_fixture_url("testrepo.git"), "./foo", &g_options)); - cl_git_pass(git_remote_load(&remote, g_repo, "origin")); - cl_assert_equal_s(url, git_remote_pushurl(remote)); - - git_remote_free(remote); + cl_git_pass(git_remote_load(&g_remote, g_repo, "origin")); + cl_assert_equal_s(url, git_remote_pushurl(g_remote)); } void test_clone_nonetwork__custom_fetch_spec(void) { - git_remote *remote; - git_reference *master; const git_refspec *actual_fs; const char *spec = "+refs/heads/master:refs/heads/foo"; g_options.fetch_spec = spec; cl_git_pass(git_clone(&g_repo, cl_git_fixture_url("testrepo.git"), "./foo", &g_options)); - cl_git_pass(git_remote_load(&remote, g_repo, "origin")); - actual_fs = git_remote_fetchspec(remote); + cl_git_pass(git_remote_load(&g_remote, g_repo, "origin")); + actual_fs = git_remote_fetchspec(g_remote); cl_assert_equal_s("refs/heads/master", git_refspec_src(actual_fs)); cl_assert_equal_s("refs/heads/foo", git_refspec_dst(actual_fs)); - cl_git_pass(git_reference_lookup(&master, g_repo, "refs/heads/foo")); - git_reference_free(master); - - git_remote_free(remote); + cl_git_pass(git_reference_lookup(&g_ref, g_repo, "refs/heads/foo")); } void test_clone_nonetwork__custom_push_spec(void) { - git_remote *remote; const git_refspec *actual_fs; const char *spec = "+refs/heads/master:refs/heads/foo"; g_options.push_spec = spec; cl_git_pass(git_clone(&g_repo, cl_git_fixture_url("testrepo.git"), "./foo", &g_options)); - cl_git_pass(git_remote_load(&remote, g_repo, "origin")); - actual_fs = git_remote_pushspec(remote); + cl_git_pass(git_remote_load(&g_remote, g_repo, "origin")); + actual_fs = git_remote_pushspec(g_remote); cl_assert_equal_s("refs/heads/master", git_refspec_src(actual_fs)); cl_assert_equal_s("refs/heads/foo", git_refspec_dst(actual_fs)); - - git_remote_free(remote); } void test_clone_nonetwork__custom_autotag(void) @@ -167,3 +164,14 @@ void test_clone_nonetwork__can_prevent_the_checkout_of_a_standard_repo(void) git_buf_free(&path); } +void test_clone_nonetwork__can_checkout_given_branch(void) +{ + g_options.checkout_branch = "test"; + cl_git_pass(git_clone(&g_repo, cl_git_fixture_url("testrepo.git"), "./foo", &g_options)); + + cl_assert_equal_i(0, git_repository_head_orphan(g_repo)); + + cl_git_pass(git_repository_head(&g_ref, g_repo)); + cl_assert_equal_s(git_reference_name(g_ref), "refs/heads/test"); +} + |