diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2015-04-23 09:21:33 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2015-05-04 07:18:29 -0500 |
commit | 64842d8756512ff22efe41e020d7339b04328cf7 (patch) | |
tree | 73780b59bdbc5ea13123e9c901bf10d3af6fbf4c | |
parent | 4beab1f8bbc29a0788ed7d5c1f6bc21741392565 (diff) | |
download | libgit2-64842d8756512ff22efe41e020d7339b04328cf7.tar.gz |
checkout test: only run icase on icase platform
-rw-r--r-- | tests/checkout/icase.c | 61 | ||||
-rw-r--r-- | tests/checkout/tree.c | 79 |
2 files changed, 61 insertions, 79 deletions
diff --git a/tests/checkout/icase.c b/tests/checkout/icase.c index ae1a63b90..82ad01e2a 100644 --- a/tests/checkout/icase.c +++ b/tests/checkout/icase.c @@ -1,6 +1,7 @@ #include "clar_libgit2.h" #include "git2/checkout.h" +#include "refs.h" #include "path.h" #ifdef GIT_WIN32 @@ -14,9 +15,18 @@ static git_checkout_options checkout_opts; void test_checkout_icase__initialize(void) { git_oid id; + git_config *cfg; + int icase = 0; repo = cl_git_sandbox_init("testrepo"); + cl_git_pass(git_repository_config_snapshot(&cfg, repo)); + git_config_get_bool(&icase, cfg, "core.ignorecase"); + git_config_free(cfg); + + if (!icase) + cl_skip(); + cl_git_pass(git_reference_name_to_id(&id, repo, "refs/heads/dir")); cl_git_pass(git_object_lookup(&obj, repo, &id, GIT_OBJ_ANY)); @@ -212,3 +222,54 @@ void test_checkout_icase__overwrites_links_for_folders_when_forced(void) cl_assert(!git_path_exists("b.txt")); assert_name_is("testrepo/a"); } + +void test_checkout_icase__ignores_unstaged_casechange(void) +{ + git_reference *orig_ref, *br2_ref; + git_commit *orig, *br2; + git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; + + checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE; + + cl_git_pass(git_reference_lookup_resolved(&orig_ref, repo, "HEAD", 100)); + cl_git_pass(git_commit_lookup(&orig, repo, git_reference_target(orig_ref))); + cl_git_pass(git_reset(repo, (git_object *)orig, GIT_RESET_HARD, NULL)); + + cl_rename("testrepo/branch_file.txt", "testrepo/Branch_File.txt"); + + cl_git_pass(git_reference_lookup_resolved(&br2_ref, repo, "refs/heads/br2", 100)); + cl_git_pass(git_commit_lookup(&br2, repo, git_reference_target(br2_ref))); + + cl_git_pass(git_checkout_tree(repo, (const git_object *)br2, &checkout_opts)); + + git_commit_free(orig); + git_reference_free(orig_ref); +} + +void test_checkout_icase__conflicts_with_casechanged_subtrees(void) +{ + git_reference *orig_ref; + git_object *orig, *subtrees; + git_oid oid; + git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; + + checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE; + + cl_git_pass(git_reference_lookup_resolved(&orig_ref, repo, "HEAD", 100)); + cl_git_pass(git_object_lookup(&orig, repo, git_reference_target(orig_ref), GIT_OBJ_COMMIT)); + cl_git_pass(git_reset(repo, (git_object *)orig, GIT_RESET_HARD, NULL)); + + cl_must_pass(p_mkdir("testrepo/AB", 0777)); + cl_must_pass(p_mkdir("testrepo/AB/C", 0777)); + cl_git_write2file("testrepo/AB/C/3.txt", "Foobar!\n", 8, O_RDWR|O_CREAT, 0666); + + cl_git_pass(git_reference_name_to_id(&oid, repo, "refs/heads/subtrees")); + cl_git_pass(git_object_lookup(&subtrees, repo, &oid, GIT_OBJ_ANY)); + + cl_git_fail(git_checkout_tree(repo, subtrees, &checkout_opts)); + + git_object_free(orig); + git_object_free(subtrees); + git_reference_free(orig_ref); +} + diff --git a/tests/checkout/tree.c b/tests/checkout/tree.c index 3bc9c9364..50541a703 100644 --- a/tests/checkout/tree.c +++ b/tests/checkout/tree.c @@ -1338,82 +1338,3 @@ void test_checkout_tree__safe_proceeds_if_no_index(void) git_object_free(obj); } -void test_checkout_tree__ignores_unstaged_casechange(void) -{ - git_reference *orig_ref, *br2_ref; - git_commit *orig, *br2; - git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; - - checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE; - - cl_git_pass(git_reference_lookup_resolved(&orig_ref, g_repo, "HEAD", 100)); - cl_git_pass(git_commit_lookup(&orig, g_repo, git_reference_target(orig_ref))); - cl_git_pass(git_reset(g_repo, (git_object *)orig, GIT_RESET_HARD, NULL)); - - cl_rename("testrepo/branch_file.txt", "testrepo/Branch_File.txt"); - - cl_git_pass(git_reference_lookup_resolved(&br2_ref, g_repo, "refs/heads/br2", 100)); - cl_git_pass(git_commit_lookup(&br2, g_repo, git_reference_target(br2_ref))); - - cl_git_pass(git_checkout_tree(g_repo, (const git_object *)br2, &checkout_opts)); - - git_commit_free(orig); - git_reference_free(orig_ref); -} - -void test_checkout_tree__conflicts_with_casechanged_subtrees(void) -{ - git_reference *orig_ref; - git_object *orig, *subtrees; - git_oid oid; - git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; - - checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE; - - cl_git_pass(git_reference_lookup_resolved(&orig_ref, g_repo, "HEAD", 100)); - cl_git_pass(git_object_lookup(&orig, g_repo, git_reference_target(orig_ref), GIT_OBJ_COMMIT)); - cl_git_pass(git_reset(g_repo, (git_object *)orig, GIT_RESET_HARD, NULL)); - - cl_must_pass(p_mkdir("testrepo/AB", 0777)); - cl_must_pass(p_mkdir("testrepo/AB/C", 0777)); - cl_git_write2file("testrepo/AB/C/3.txt", "Foobar!\n", 8, O_RDWR|O_CREAT, 0666); - - cl_git_pass(git_reference_name_to_id(&oid, g_repo, "refs/heads/subtrees")); - cl_git_pass(git_object_lookup(&subtrees, g_repo, &oid, GIT_OBJ_ANY)); - - cl_git_fail(git_checkout_tree(g_repo, subtrees, &checkout_opts)); - - git_object_free(orig); - git_object_free(subtrees); - git_reference_free(orig_ref); -} - -void test_checkout_tree__checks_out_casechanged_subtrees(void) -{ - git_reference *orig_ref; - git_object *orig, *subtrees; - git_oid oid; - git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; - - checkout_opts.checkout_strategy = GIT_CHECKOUT_SAFE; - - cl_git_pass(git_reference_lookup_resolved(&orig_ref, g_repo, "HEAD", 100)); - cl_git_pass(git_object_lookup(&orig, g_repo, git_reference_target(orig_ref), GIT_OBJ_COMMIT)); - cl_git_pass(git_reset(g_repo, (git_object *)orig, GIT_RESET_HARD, NULL)); - - cl_must_pass(p_mkdir("testrepo/AB", 0777)); - cl_must_pass(p_mkdir("testrepo/AB/C", 0777)); - cl_git_write2file("testrepo/AB/C/unrelated.txt", "Foobar!\n", 8, O_RDWR|O_CREAT, 0666); - - cl_git_pass(git_reference_name_to_id(&oid, g_repo, "refs/heads/subtrees")); - cl_git_pass(git_object_lookup(&subtrees, g_repo, &oid, GIT_OBJ_ANY)); - - cl_git_pass(git_checkout_tree(g_repo, subtrees, &checkout_opts)); - - cl_assert(git_path_isfile("testrepo/ab/c/3.txt")); - cl_assert(git_path_isfile("testrepo/ab/c/unrelated.txt")); - - git_object_free(orig); - git_object_free(subtrees); - git_reference_free(orig_ref); -} |