diff options
author | Russell Belfer <rb@github.com> | 2014-01-21 11:36:43 -0800 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-01-24 10:54:05 -0800 |
commit | 9bbc53d6d424cbdc8b5ca47f6a85b49794c516fe (patch) | |
tree | 0ced1c19c984124fd212990280df0c919a044e49 /tests/diff/drivers.c | |
parent | 2c65602e45964f695bda91a6b1cfbf6b2f4903ea (diff) | |
download | libgit2-9bbc53d6d424cbdc8b5ca47f6a85b49794c516fe.tar.gz |
Fix filemode updating in diff text
Diffstat (limited to 'tests/diff/drivers.c')
-rw-r--r-- | tests/diff/drivers.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/tests/diff/drivers.c b/tests/diff/drivers.c index 4524cd0db..003a84485 100644 --- a/tests/diff/drivers.c +++ b/tests/diff/drivers.c @@ -15,13 +15,21 @@ void test_diff_drivers__cleanup(void) g_repo = NULL; } -static void overwrite_chmod_at_offset(git_buf *buf, size_t offset) +static void overwrite_filemode(const char *expected, git_buf *actual) { - if (cl_is_chmod_supported()) + size_t offset; + char *found; + + found = strstr(expected, "100644"); + if (!found) + return; + + offset = ((const char *)found) - expected; + if (actual->size < offset + 6) return; - if (buf->size > offset + 6 && memcmp(&buf->ptr[offset], "100644", 6) != 0) - memcpy(&buf->ptr[offset], "100644", 6); + if (memcmp(&actual->ptr[offset], "100644", 6) != 0) + memcpy(&actual->ptr[offset], "100644", 6); } void test_diff_drivers__patterns(void) @@ -157,7 +165,7 @@ void test_diff_drivers__long_lines(void) cl_git_pass(git_patch_to_buf(&actual, patch)); /* if chmod not supported, overwrite mode bits since anything is possible */ - overwrite_chmod_at_offset(&actual, 66); + overwrite_filemode(expected, &actual); cl_assert_equal_s(expected, actual.ptr); @@ -210,7 +218,7 @@ void test_diff_drivers__builtins(void) cl_git_pass(git_patch_from_diff(&patch, diff, 0)); cl_git_pass(git_patch_to_buf(&actual, patch)); - overwrite_chmod_at_offset(&actual, 59); + overwrite_filemode(expected_nodriver, &actual); cl_assert_equal_s(expected_nodriver, actual.ptr); @@ -227,7 +235,7 @@ void test_diff_drivers__builtins(void) cl_git_pass(git_patch_from_diff(&patch, diff, 0)); cl_git_pass(git_patch_to_buf(&actual, patch)); - overwrite_chmod_at_offset(&actual, 59); + overwrite_filemode(expected_driver, &actual); cl_assert_equal_s(expected_driver, actual.ptr); |