diff options
author | Russell Belfer <rb@github.com> | 2014-01-25 03:45:49 +0400 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-01-25 03:45:49 +0400 |
commit | 027b8edac7e91480623815193ed994db808064f6 (patch) | |
tree | f43daef6b20a8c46c1a677ac681841a3a773c51d | |
parent | 3b19d2fdcbd9f6185490fc10e7c4540758954321 (diff) |
Move userdiff tests to be data driven
This moves the expected and actual test data along with the source
data for the userdiff tests into the tests/resources/userdiff test
repo and updates the test to use that.
22 files changed, 239 insertions, 47 deletions
diff --git a/tests/diff/drivers.c b/tests/diff/drivers.c index 119132149..1cbf9e211 100644 --- a/tests/diff/drivers.c +++ b/tests/diff/drivers.c @@ -176,70 +176,73 @@ void test_diff_drivers__long_lines(void) void test_diff_drivers__builtins(void) { - git_index *idx; git_diff *diff; git_patch *patch; - git_buf actual = GIT_BUF_INIT; + git_buf file = GIT_BUF_INIT, actual = GIT_BUF_INIT, expected = GIT_BUF_INIT; git_diff_options opts = GIT_DIFF_OPTIONS_INIT; - const char *base = - "<html>\n<body>\n" - " <h1 id=\"first section\">\n <ol>\n <li>item 1.1</li>\n <li>item 1.2</li>\n <li>item 1.3</li>\n <li>item 1.4</li>\n <li>item 1.5</li>\n <li>item 1.6</li>\n <li>item 1.7</li>\n <li>item 1.8</li>\n <li>item 1.9</li>\n </ol>\n </h1>\n" - " <h1 id=\"second section\">\n <ol>\n <li>item 2.1</li>\n <li>item 2.2</li>\n <li>item 2.3</li>\n <li>item 2.4</li>\n <li>item 2.5</li>\n <li>item 2.6</li>\n <li>item 2.7</li>\n <li>item 2.8</li>\n </ol>\n </h1>\n" - " <h1 id=\"third section\">\n <ol>\n <li>item 3.1</li>\n <li>item 3.2</li>\n <li>item 3.3</li>\n <li>item 3.4</li>\n <li>item 3.5</li>\n <li>item 3.6</li>\n <li>item 3.7</li>\n <li>item 3.8</li>\n </ol>\n </h1>\n" - "</body></html>\n"; - const char *modified = - "<html>\n<body>\n" - " <h1 id=\"first section\">\n <ol>\n <li>item 1.1</li>\n <li>item 1.2 changed</li>\n <li>item 1.3 changed</li>\n <li>item 1.4</li>\n <li>item 1.5</li>\n <li>item 1.6</li>\n <li>item 1.7</li>\n <li>item 1.8</li>\n <li>item 1.9</li>\n <li>item 1.10 added</li>\n </ol>\n </h1>\n" - " <h1 id=\"second section\">\n <ol>\n <li>item 2.1</li>\n <li>item 2.2</li>\n <li>item 2.3</li>\n <li>item 2.4</li>\n <li>item 2.5</li>\n <li>item 2.6</li>\n <li>item 2.7 changed</li>\n <li>item 2.7.1 added</li>\n <li>item 2.8</li>\n </ol>\n </h1>\n" - " <h1 id=\"third section\">\n <ol>\n <li>item 3.1</li>\n <li>item 3.2</li>\n <li>item 3.3</li>\n <li>item 3.4</li>\n <li>item 3.5</li>\n <li>item 3.6</li>\n </ol>\n </h1>\n" - "</body></html>\n"; - const char *expected_nodriver = - "diff --git a/file.html b/file.html\nindex 97b34db..c7dbed3 100644\n--- a/file.html\n+++ b/file.html\n@@ -5,4 +5,4 @@\n <li>item 1.1</li>\n- <li>item 1.2</li>\n- <li>item 1.3</li>\n+ <li>item 1.2 changed</li>\n+ <li>item 1.3 changed</li>\n <li>item 1.4</li>\n@@ -13,2 +13,3 @@\n <li>item 1.9</li>\n+ <li>item 1.10 added</li>\n </ol>\n@@ -23,3 +24,4 @@\n <li>item 2.6</li>\n- <li>item 2.7</li>\n+ <li>item 2.7 changed</li>\n+ <li>item 2.7.1 added</li>\n <li>item 2.8</li>\n@@ -35,4 +37,2 @@\n <li>item 3.6</li>\n- <li>item 3.7</li>\n- <li>item 3.8</li>\n </ol>\n"; - const char *expected_driver = - "diff --git a/file.html b/file.html\nindex 97b34db..c7dbed3 100644\n--- a/file.html\n+++ b/file.html\n@@ -5,4 +5,4 @@ <h1 id=\"first section\">\n <li>item 1.1</li>\n- <li>item 1.2</li>\n- <li>item 1.3</li>\n+ <li>item 1.2 changed</li>\n+ <li>item 1.3 changed</li>\n <li>item 1.4</li>\n@@ -13,2 +13,3 @@ <h1 id=\"first section\">\n <li>item 1.9</li>\n+ <li>item 1.10 added</li>\n </ol>\n@@ -23,3 +24,4 @@ <h1 id=\"second section\">\n <li>item 2.6</li>\n- <li>item 2.7</li>\n+ <li>item 2.7 changed</li>\n+ <li>item 2.7.1 added</li>\n <li>item 2.8</li>\n@@ -35,4 +37,2 @@ <h1 id=\"third section\">\n <li>item 3.6</li>\n- <li>item 3.7</li>\n- <li>item 3.8</li>\n </ol>\n"; + int i; + static const char *files[] = { + "html", + NULL + }; - g_repo = cl_git_sandbox_init("empty_standard_repo"); + g_repo = cl_git_sandbox_init("userdiff"); - cl_git_mkfile("empty_standard_repo/file.html", base); - cl_git_pass(git_repository_index(&idx, g_repo)); - cl_git_pass(git_index_add_bypath(idx, "file.html")); - cl_git_pass(git_index_write(idx)); - git_index_free(idx); + opts.interhunk_lines = 1; + opts.context_lines = 1; + opts.pathspec.count = 1; - cl_git_rewritefile("empty_standard_repo/file.html", modified); + for (i = 0; files[i]; ++i) { + git_buf_sets(&file, "files/file."); + git_buf_puts(&file, files[i]); + opts.pathspec.strings = &file.ptr; - /* do diff with no special driver */ + /* do diff with no special driver */ - opts.interhunk_lines = 1; - opts.context_lines = 1; + cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts)); + cl_assert_equal_sz(1, git_diff_num_deltas(diff)); + cl_git_pass(git_patch_from_diff(&patch, diff, 0)); + cl_git_pass(git_patch_to_buf(&actual, patch)); - cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts)); - cl_assert_equal_sz(1, git_diff_num_deltas(diff)); - cl_git_pass(git_patch_from_diff(&patch, diff, 0)); - cl_git_pass(git_patch_to_buf(&actual, patch)); + git_buf_sets(&expected, "userdiff/expected/nodriver/diff."); + git_buf_puts(&expected, files[i]); + cl_git_pass(git_futils_readbuffer(&expected, expected.ptr)); - overwrite_filemode(expected_nodriver, &actual); + overwrite_filemode(expected.ptr, &actual); - cl_assert_equal_s(expected_nodriver, actual.ptr); + cl_assert_equal_s(expected.ptr, actual.ptr); - git_buf_free(&actual); - git_patch_free(patch); - git_diff_free(diff); + git_buf_clear(&actual); + git_patch_free(patch); + git_diff_free(diff); - /* do diff with HTML driver */ + /* do diff with driver */ - cl_git_mkfile("empty_standard_repo/.gitattributes", "*.html diff=html\n"); + { + FILE *fp = fopen("userdiff/.gitattributes", "w"); + fprintf(fp, "*.%s diff=%s\n", files[i], files[i]); + fclose(fp); + } - cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts)); - cl_assert_equal_sz(1, git_diff_num_deltas(diff)); - cl_git_pass(git_patch_from_diff(&patch, diff, 0)); - cl_git_pass(git_patch_to_buf(&actual, patch)); + cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts)); + cl_assert_equal_sz(1, git_diff_num_deltas(diff)); + cl_git_pass(git_patch_from_diff(&patch, diff, 0)); + cl_git_pass(git_patch_to_buf(&actual, patch)); + + git_buf_sets(&expected, "userdiff/expected/driver/diff."); + git_buf_puts(&expected, files[i]); + cl_git_pass(git_futils_readbuffer(&expected, expected.ptr)); + + overwrite_filemode(expected.ptr, &actual); - overwrite_filemode(expected_driver, &actual); + cl_assert_equal_s(expected.ptr, actual.ptr); - cl_assert_equal_s(expected_driver, actual.ptr); + git_buf_clear(&actual); + git_patch_free(patch); + git_diff_free(diff); + } + git_buf_free(&file); git_buf_free(&actual); - git_patch_free(patch); - git_diff_free(diff); + git_buf_free(&expected); } diff --git a/tests/resources/userdiff/.gitted/HEAD b/tests/resources/userdiff/.gitted/HEAD new file mode 100644 index 000000000..cb089cd89 --- /dev/null +++ b/tests/resources/userdiff/.gitted/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/tests/resources/userdiff/.gitted/config b/tests/resources/userdiff/.gitted/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/tests/resources/userdiff/.gitted/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/tests/resources/userdiff/.gitted/description b/tests/resources/userdiff/.gitted/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/tests/resources/userdiff/.gitted/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/tests/resources/userdiff/.gitted/index b/tests/resources/userdiff/.gitted/index Binary files differnew file mode 100644 index 000000000..9372411cd --- /dev/null +++ b/tests/resources/userdiff/.gitted/index diff --git a/tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 b/tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 Binary files differnew file mode 100644 index 000000000..3a9d75cc1 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 diff --git a/tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba b/tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba Binary files differnew file mode 100644 index 000000000..3d57061ce --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba diff --git a/tests/resources/userdiff/.gitted/objects/23/20e2f1e4d9e6201a8e15949a0c10a533fa51cd b/tests/resources/userdiff/.gitted/objects/23/20e2f1e4d9e6201a8e15949a0c10a533fa51cd Binary files differnew file mode 100644 index 000000000..6dbcafed4 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/23/20e2f1e4d9e6201a8e15949a0c10a533fa51cd diff --git a/tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c b/tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c Binary files differnew file mode 100644 index 000000000..e7d2fba41 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c diff --git a/tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 b/tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 Binary files differnew file mode 100644 index 000000000..49d59c11d --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 diff --git a/tests/resources/userdiff/.gitted/objects/50/346bde7428a29c9845470a14d87b1634293d48 b/tests/resources/userdiff/.gitted/objects/50/346bde7428a29c9845470a14d87b1634293d48 new file mode 100644 index 000000000..9de1b3598 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/50/346bde7428a29c9845470a14d87b1634293d48 @@ -0,0 +1 @@ +x+)JMU06g040031QHI(ahוL7rYMJ;8
\ No newline at end of file diff --git a/tests/resources/userdiff/.gitted/objects/5a/428e7dcffb41b65984517f1e6b8547babc8dff b/tests/resources/userdiff/.gitted/objects/5a/428e7dcffb41b65984517f1e6b8547babc8dff Binary files differnew file mode 100644 index 000000000..143a1cecf --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/5a/428e7dcffb41b65984517f1e6b8547babc8dff diff --git a/tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f b/tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f Binary files differnew file mode 100644 index 000000000..415f40a66 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f diff --git a/tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 b/tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 new file mode 100644 index 000000000..c0a03a241 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 @@ -0,0 +1,2 @@ +xM F]sfJ+έ7g$P:_O{0,cN:VE +gRҚJ(l6x㠜I9R[sO⭻lPf3b)^{d39
\ No newline at end of file diff --git a/tests/resources/userdiff/.gitted/objects/d6/3c806de4f666369ed169495657bec24b558165 b/tests/resources/userdiff/.gitted/objects/d6/3c806de4f666369ed169495657bec24b558165 Binary files differnew file mode 100644 index 000000000..2c0fbcc09 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/d6/3c806de4f666369ed169495657bec24b558165 diff --git a/tests/resources/userdiff/.gitted/objects/ef/1641511d6cb425c6b4f59ef1feffe7762e86e0 b/tests/resources/userdiff/.gitted/objects/ef/1641511d6cb425c6b4f59ef1feffe7762e86e0 new file mode 100644 index 000000000..223f3b380 --- /dev/null +++ b/tests/resources/userdiff/.gitted/objects/ef/1641511d6cb425c6b4f59ef1feffe7762e86e0 @@ -0,0 +1 @@ +x+)JMU06g040031QHLK(ar=q[dK`\v=Mr
\ No newline at end of file diff --git a/tests/resources/userdiff/.gitted/refs/heads/master b/tests/resources/userdiff/.gitted/refs/heads/master new file mode 100644 index 000000000..2ec79ec86 --- /dev/null +++ b/tests/resources/userdiff/.gitted/refs/heads/master @@ -0,0 +1 @@ +9db1d09ff9ad5190bcf12d72ea3c818ffca344c5 diff --git a/tests/resources/userdiff/after/file.html b/tests/resources/userdiff/after/file.html new file mode 100644 index 000000000..2320e2f1e --- /dev/null +++ b/tests/resources/userdiff/after/file.html @@ -0,0 +1,41 @@ +<html> +<body> + <h1 id="first section"> + <ol> + <li>item 1.1</li> + <li>item 1.2 changed</li> + <li>item 1.3 changed</li> + <li>item 1.4</li> + <li>item 1.5</li> + <li>item 1.6</li> + <li>item 1.7</li> + <li>item 1.8</li> + <li>item 1.9</li> + <li>item 1.10 added</li> + </ol> + </h1> + <h1 id="second section"> + <ol> + <li>item 2.1</li> + <li>item 2.2</li> + <li>item 2.3</li> + <li>item 2.4</li> + <li>item 2.5</li> + <li>item 2.6</li> + <li>item 2.7 changed</li> + <li>item 2.7.1 added</li> + <li>item 2.8</li> + </ol> + </h1> + <h1 id="third section"> + <ol> + <li>item 3.1</li> + <li>item 3.2</li> + <li>item 3.3</li> + <li>item 3.4</li> + <li>item 3.5</li> + <li>item 3.6</li> + </ol> + </h1> +</body> +</html> diff --git a/tests/resources/userdiff/before/file.html b/tests/resources/userdiff/before/file.html new file mode 100644 index 000000000..872d19663 --- /dev/null +++ b/tests/resources/userdiff/before/file.html @@ -0,0 +1,41 @@ +<html> +<body> + <h1 id="first section"> + <ol> + <li>item 1.1</li> + <li>item 1.2</li> + <li>item 1.3</li> + <li>item 1.4</li> + <li>item 1.5</li> + <li>item 1.6</li> + <li>item 1.7</li> + <li>item 1.8</li> + <li>item 1.9</li> + </ol> + </h1> + <h1 id="second section"> + <ol> + <li>item 2.1</li> + <li>item 2.2</li> + <li>item 2.3</li> + <li>item 2.4</li> + <li>item 2.5</li> + <li>item 2.6</li> + <li>item 2.7</li> + <li>item 2.8</li> + </ol> + </h1> + <h1 id="third section"> + <ol> + <li>item 3.1</li> + <li>item 3.2</li> + <li>item 3.3</li> + <li>item 3.4</li> + <li>item 3.5</li> + <li>item 3.6</li> + <li>item 3.7</li> + <li>item 3.8</li> + </ol> + </h1> +</body> +</html> diff --git a/tests/resources/userdiff/expected/driver/diff.html b/tests/resources/userdiff/expected/driver/diff.html new file mode 100644 index 000000000..5a428e7dc --- /dev/null +++ b/tests/resources/userdiff/expected/driver/diff.html @@ -0,0 +1,26 @@ +diff --git a/files/file.html b/files/file.html +index 872d196..2320e2f 100644 +--- a/files/file.html ++++ b/files/file.html +@@ -5,4 +5,4 @@ <h1 id="first section"> + <li>item 1.1</li> +- <li>item 1.2</li> +- <li>item 1.3</li> ++ <li>item 1.2 changed</li> ++ <li>item 1.3 changed</li> + <li>item 1.4</li> +@@ -13,2 +13,3 @@ <h1 id="first section"> + <li>item 1.9</li> ++ <li>item 1.10 added</li> + </ol> +@@ -23,3 +24,4 @@ <h1 id="second section"> + <li>item 2.6</li> +- <li>item 2.7</li> ++ <li>item 2.7 changed</li> ++ <li>item 2.7.1 added</li> + <li>item 2.8</li> +@@ -35,4 +37,2 @@ <h1 id="third section"> + <li>item 3.6</li> +- <li>item 3.7</li> +- <li>item 3.8</li> + </ol> diff --git a/tests/resources/userdiff/expected/nodriver/diff.html b/tests/resources/userdiff/expected/nodriver/diff.html new file mode 100644 index 000000000..2ea4b8a16 --- /dev/null +++ b/tests/resources/userdiff/expected/nodriver/diff.html @@ -0,0 +1,26 @@ +diff --git a/files/file.html b/files/file.html +index 872d196..2320e2f 100644 +--- a/files/file.html ++++ b/files/file.html +@@ -5,4 +5,4 @@ + <li>item 1.1</li> +- <li>item 1.2</li> +- <li>item 1.3</li> ++ <li>item 1.2 changed</li> ++ <li>item 1.3 changed</li> + <li>item 1.4</li> +@@ -13,2 +13,3 @@ + <li>item 1.9</li> ++ <li>item 1.10 added</li> + </ol> +@@ -23,3 +24,4 @@ + <li>item 2.6</li> +- <li>item 2.7</li> ++ <li>item 2.7 changed</li> ++ <li>item 2.7.1 added</li> + <li>item 2.8</li> +@@ -35,4 +37,2 @@ + <li>item 3.6</li> +- <li>item 3.7</li> +- <li>item 3.8</li> + </ol> diff --git a/tests/resources/userdiff/files/file.html b/tests/resources/userdiff/files/file.html new file mode 100644 index 000000000..2320e2f1e --- /dev/null +++ b/tests/resources/userdiff/files/file.html @@ -0,0 +1,41 @@ +<html> +<body> + <h1 id="first section"> + <ol> + <li>item 1.1</li> + <li>item 1.2 changed</li> + <li>item 1.3 changed</li> + <li>item 1.4</li> + <li>item 1.5</li> + <li>item 1.6</li> + <li>item 1.7</li> + <li>item 1.8</li> + <li>item 1.9</li> + <li>item 1.10 added</li> + </ol> + </h1> + <h1 id="second section"> + <ol> + <li>item 2.1</li> + <li>item 2.2</li> + <li>item 2.3</li> + <li>item 2.4</li> + <li>item 2.5</li> + <li>item 2.6</li> + <li>item 2.7 changed</li> + <li>item 2.7.1 added</li> + <li>item 2.8</li> + </ol> + </h1> + <h1 id="third section"> + <ol> + <li>item 3.1</li> + <li>item 3.2</li> + <li>item 3.3</li> + <li>item 3.4</li> + <li>item 3.5</li> + <li>item 3.6</li> + </ol> + </h1> +</body> +</html> |