diff options
author | Ben Straub <bs@github.com> | 2013-12-06 13:38:59 -0800 |
---|---|---|
committer | Ben Straub <bs@github.com> | 2013-12-06 13:38:59 -0800 |
commit | 7fb4147f1f7e64d7544e574998d5cec04077dfc4 (patch) | |
tree | 2d8dc79a8dcf60c9cfc56f11e675d03c6aeb34e7 /tests/diff/rename.c | |
parent | 710f383868cef86ff837340c698b1672c7902486 (diff) | |
download | libgit2-7fb4147f1f7e64d7544e574998d5cec04077dfc4.tar.gz |
Don't clobber whitespace settings
Diffstat (limited to 'tests/diff/rename.c')
-rw-r--r-- | tests/diff/rename.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/diff/rename.c b/tests/diff/rename.c index c08c1a8b4..ca6d076d6 100644 --- a/tests/diff/rename.c +++ b/tests/diff/rename.c @@ -1522,3 +1522,45 @@ void test_diff_rename__can_override_thresholds_when_obeying_config(void) git_tree_free(tree1); git_tree_free(tree2); } + +void test_diff_rename__by_config_doesnt_mess_with_whitespace_settings(void) +{ + const char *sha1 = "1c068dee5790ef1580cfc4cd670915b48d790084"; + const char *sha2 = "19dd32dfb1520a64e5bbaae8dce6ef423dfa2f13"; + + git_tree *tree1, *tree2; + git_config *cfg; + git_diff *diff; + git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT; + git_diff_find_options opts = GIT_DIFF_FIND_OPTIONS_INIT; + diff_expects exp; + + tree1 = resolve_commit_oid_to_tree(g_repo, sha1); + tree2 = resolve_commit_oid_to_tree(g_repo, sha2); + + diffopts.flags |= GIT_DIFF_INCLUDE_UNMODIFIED; + opts.flags = GIT_DIFF_FIND_BY_CONFIG; + + cl_git_pass(git_repository_config(&cfg, g_repo)); + cl_git_pass(git_config_set_string(cfg, "diff.renames", "copies")); + git_config_free(cfg); + + /* Don't ignore whitespace; this should find a change in sixserving.txt */ + opts.flags |= 0 | GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE; + cl_git_pass(git_diff_tree_to_tree( + &diff, g_repo, tree1, tree2, &diffopts)); + memset(&exp, 0, sizeof(exp)); + cl_git_pass(git_diff_find_similar(diff, &opts)); + cl_git_pass(git_diff_foreach(diff, + diff_file_cb, diff_hunk_cb, diff_line_cb, &exp)); + cl_assert_equal_i(5, exp.files); + cl_assert_equal_i(2, exp.file_status[GIT_DELTA_MODIFIED]); + cl_assert_equal_i(1, exp.file_status[GIT_DELTA_RENAMED]); + cl_assert_equal_i(1, exp.file_status[GIT_DELTA_DELETED]); + cl_assert_equal_i(1, exp.file_status[GIT_DELTA_ADDED]); + git_diff_free(diff); + + /* Cleanup */ + git_tree_free(tree1); + git_tree_free(tree2); +} |