From 027b8edac7e91480623815193ed994db808064f6 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Fri, 24 Jan 2014 15:45:49 -0800 Subject: [PATCH] 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. --- tests/diff/drivers.c | 111 +++++++++--------- tests/resources/userdiff/.gitted/HEAD | Bin 0 -> 23 bytes tests/resources/userdiff/.gitted/config | Bin 0 -> 137 bytes tests/resources/userdiff/.gitted/description | Bin 0 -> 73 bytes tests/resources/userdiff/.gitted/index | Bin 0 -> 456 bytes .../05/d669073b39d36847315e3a5b4512cf4cba4546 | Bin 0 -> 54 bytes .../20/ab776b6ff3169fa0e5eff65df30d45187d22ba | Bin 0 -> 54 bytes .../23/20e2f1e4d9e6201a8e15949a0c10a533fa51cd | Bin 0 -> 207 bytes .../2e/a4b8a16d737c180dfdd2b119dec9501592326c | Bin 0 -> 228 bytes .../49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 | Bin 0 -> 118 bytes .../50/346bde7428a29c9845470a14d87b1634293d48 | Bin 0 -> 53 bytes .../5a/428e7dcffb41b65984517f1e6b8547babc8dff | Bin 0 -> 263 bytes .../87/2d19663f32459389597b52beec6457c1dc971f | Bin 0 -> 178 bytes .../9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 | Bin 0 -> 132 bytes .../d6/3c806de4f666369ed169495657bec24b558165 | Bin 0 -> 76 bytes .../ef/1641511d6cb425c6b4f59ef1feffe7762e86e0 | Bin 0 -> 53 bytes .../userdiff/.gitted/refs/heads/master | Bin 0 -> 41 bytes tests/resources/userdiff/after/file.html | Bin 0 -> 765 bytes tests/resources/userdiff/before/file.html | Bin 0 -> 728 bytes .../userdiff/expected/driver/diff.html | Bin 0 -> 711 bytes .../userdiff/expected/nodriver/diff.html | Bin 0 -> 614 bytes tests/resources/userdiff/files/file.html | Bin 0 -> 765 bytes 22 files changed, 57 insertions(+), 54 deletions(-) create mode 100644 tests/resources/userdiff/.gitted/HEAD create mode 100644 tests/resources/userdiff/.gitted/config create mode 100644 tests/resources/userdiff/.gitted/description create mode 100644 tests/resources/userdiff/.gitted/index create mode 100644 tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 create mode 100644 tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba create mode 100644 tests/resources/userdiff/.gitted/objects/23/20e2f1e4d9e6201a8e15949a0c10a533fa51cd create mode 100644 tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c create mode 100644 tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 create mode 100644 tests/resources/userdiff/.gitted/objects/50/346bde7428a29c9845470a14d87b1634293d48 create mode 100644 tests/resources/userdiff/.gitted/objects/5a/428e7dcffb41b65984517f1e6b8547babc8dff create mode 100644 tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f create mode 100644 tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 create mode 100644 tests/resources/userdiff/.gitted/objects/d6/3c806de4f666369ed169495657bec24b558165 create mode 100644 tests/resources/userdiff/.gitted/objects/ef/1641511d6cb425c6b4f59ef1feffe7762e86e0 create mode 100644 tests/resources/userdiff/.gitted/refs/heads/master create mode 100644 tests/resources/userdiff/after/file.html create mode 100644 tests/resources/userdiff/before/file.html create mode 100644 tests/resources/userdiff/expected/driver/diff.html create mode 100644 tests/resources/userdiff/expected/nodriver/diff.html create mode 100644 tests/resources/userdiff/files/file.html 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 = - "\n\n" - "

\n
    \n
  1. item 1.1
  2. \n
  3. item 1.2
  4. \n
  5. item 1.3
  6. \n
  7. item 1.4
  8. \n
  9. item 1.5
  10. \n
  11. item 1.6
  12. \n
  13. item 1.7
  14. \n
  15. item 1.8
  16. \n
  17. item 1.9
  18. \n
\n

\n" - "

\n
    \n
  1. item 2.1
  2. \n
  3. item 2.2
  4. \n
  5. item 2.3
  6. \n
  7. item 2.4
  8. \n
  9. item 2.5
  10. \n
  11. item 2.6
  12. \n
  13. item 2.7
  14. \n
  15. item 2.8
  16. \n
\n

\n" - "

\n
    \n
  1. item 3.1
  2. \n
  3. item 3.2
  4. \n
  5. item 3.3
  6. \n
  7. item 3.4
  8. \n
  9. item 3.5
  10. \n
  11. item 3.6
  12. \n
  13. item 3.7
  14. \n
  15. item 3.8
  16. \n
\n

\n" - "\n"; - const char *modified = - "\n\n" - "

\n
    \n
  1. item 1.1
  2. \n
  3. item 1.2 changed
  4. \n
  5. item 1.3 changed
  6. \n
  7. item 1.4
  8. \n
  9. item 1.5
  10. \n
  11. item 1.6
  12. \n
  13. item 1.7
  14. \n
  15. item 1.8
  16. \n
  17. item 1.9
  18. \n
  19. item 1.10 added
  20. \n
\n

\n" - "

\n
    \n
  1. item 2.1
  2. \n
  3. item 2.2
  4. \n
  5. item 2.3
  6. \n
  7. item 2.4
  8. \n
  9. item 2.5
  10. \n
  11. item 2.6
  12. \n
  13. item 2.7 changed
  14. \n
  15. item 2.7.1 added
  16. \n
  17. item 2.8
  18. \n
\n

\n" - "

\n
    \n
  1. item 3.1
  2. \n
  3. item 3.2
  4. \n
  5. item 3.3
  6. \n
  7. item 3.4
  8. \n
  9. item 3.5
  10. \n
  11. item 3.6
  12. \n
\n

\n" - "\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
  • item 1.1
  • \n-
  • item 1.2
  • \n-
  • item 1.3
  • \n+
  • item 1.2 changed
  • \n+
  • item 1.3 changed
  • \n
  • item 1.4
  • \n@@ -13,2 +13,3 @@\n
  • item 1.9
  • \n+
  • item 1.10 added
  • \n \n@@ -23,3 +24,4 @@\n
  • item 2.6
  • \n-
  • item 2.7
  • \n+
  • item 2.7 changed
  • \n+
  • item 2.7.1 added
  • \n
  • item 2.8
  • \n@@ -35,4 +37,2 @@\n
  • item 3.6
  • \n-
  • item 3.7
  • \n-
  • item 3.8
  • \n \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 @@

    \n
  • item 1.1
  • \n-
  • item 1.2
  • \n-
  • item 1.3
  • \n+
  • item 1.2 changed
  • \n+
  • item 1.3 changed
  • \n
  • item 1.4
  • \n@@ -13,2 +13,3 @@

    \n
  • item 1.9
  • \n+
  • item 1.10 added
  • \n \n@@ -23,3 +24,4 @@

    \n
  • item 2.6
  • \n-
  • item 2.7
  • \n+
  • item 2.7 changed
  • \n+
  • item 2.7.1 added
  • \n
  • item 2.8
  • \n@@ -35,4 +37,2 @@

    \n
  • item 3.6
  • \n-
  • item 3.7
  • \n-
  • item 3.8
  • \n \n"; + int i; + static const char *files[] = { + "html", + NULL + }; - g_repo = cl_git_sandbox_init("empty_standard_repo"); - - 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); - - cl_git_rewritefile("empty_standard_repo/file.html", modified); - - /* do diff with no special driver */ + g_repo = cl_git_sandbox_init("userdiff"); opts.interhunk_lines = 1; opts.context_lines = 1; + opts.pathspec.count = 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)); + for (i = 0; files[i]; ++i) { + git_buf_sets(&file, "files/file."); + git_buf_puts(&file, files[i]); + opts.pathspec.strings = &file.ptr; - overwrite_filemode(expected_nodriver, &actual); + /* do diff with no special driver */ - cl_assert_equal_s(expected_nodriver, actual.ptr); + 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.ptr, &actual); + + cl_assert_equal_s(expected.ptr, actual.ptr); + + git_buf_clear(&actual); + git_patch_free(patch); + git_diff_free(diff); + + /* do diff with driver */ + + { + 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)); + + 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); + + cl_assert_equal_s(expected.ptr, 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); - - /* do diff with HTML driver */ - - cl_git_mkfile("empty_standard_repo/.gitattributes", "*.html diff=html\n"); - - 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)); - - overwrite_filemode(expected_driver, &actual); - - cl_assert_equal_s(expected_driver, actual.ptr); - - 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 0000000000000000000000000000000000000000..cb089cd89a7d7686d284d8761201649346b5aa1c GIT binary patch literal 23 ecmXR)O|w!cN=+-)&qz&7Db~+TEG|hc;sO9;xClW2 literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/config b/tests/resources/userdiff/.gitted/config new file mode 100644 index 0000000000000000000000000000000000000000..6c9406b7d9320db083eca69b3f8bee9a6c7b50d4 GIT binary patch literal 137 zcmYk#%?-jZ3KJaaM(b)IThRcka) zn6vinzTI-FENHqTG;JZL7ug4u#6zM7i5Th{J5BgE#z&9!LjG%xu(tTZ>RkRd-|~Df A#{d8T literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/description b/tests/resources/userdiff/.gitted/description new file mode 100644 index 0000000000000000000000000000000000000000..498b267a8c7812490d6479839c5577eaaec79d62 GIT binary patch literal 73 zcmWH|%S+5nO;IRHEyyp$t+PQ$;d2LNXyJgRZve!Elw`VEGWs$&r??@ Q$yWgB0LrH#Y0~2Y0PnOK(EtDd literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/index b/tests/resources/userdiff/.gitted/index new file mode 100644 index 0000000000000000000000000000000000000000..9372411cd8c99727a1e81c014a562905310f5a69 GIT binary patch literal 456 zcmZ?q402{*U|<4b)}TjU<^X917|qAPz``c7^b-R^;}Ql2#;-sr5unn)$_kG@KDqf! zL8?!5$}Ap%rN+Mk&ob~Qrj?`?>8EApr0Qjqx$$uxT- z*U6oc)j|8-q=X;5GhLoRASpF1zbF;iz@SGz)W#*?z{H%{%4R(ttd!ME=f(%PbtbQ1G+RNGc66`QlPn~pyq;UsJVe?=BDW_*|9LU zxJH8a@1>2B_f7_gPBO}2kcOL^mycmG$W%~x{#=brL&HHD&3x?Pzz+)1V&q_8Xv%nB Weue9Yj_3;O-W#%iejl%nY6Ad&0h1sA literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 b/tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 new file mode 100644 index 0000000000000000000000000000000000000000..3a9d75cc163f2208427b0d4eaee474b5a999683f GIT binary patch literal 54 zcmbS>LWXA=X$D!zO?c{ZIZsCH3s+D8r@(|@8B KVhjNZ0(Sv0TNSea literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba b/tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba new file mode 100644 index 0000000000000000000000000000000000000000..3d57061ce386d3709125f1ba2a3bd0d830b7698c GIT binary patch literal 54 zcmbwA5)&uY+SGZ5Gj^O3AG%&;Zy?I zlp|4sBT<4QQ6fJe4^<)e6YqNZ!2NRY#t#1&kYzxY0a*qV90RfpxH9aUreuER;VP$B J{|3DL&q1teT{8dx literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c b/tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c new file mode 100644 index 0000000000000000000000000000000000000000..e7d2fba413542584e7d20152fa21c50db040c612 GIT binary patch literal 228 zcmV*(0>fV5^BSy-F)oNvJOD!s828YpJl9gg?yZedzqX zgG%X*aeWU$T-*q4(K~M+?<%k3;GtV9%-xKA!oEhM4waNhSX%5sm1U(h6GHsEFwS|# zscAs$wieIl|GtCrQ1pdLSxJ6u=g=<+WTXZqfN?Sa literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 b/tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 new file mode 100644 index 0000000000000000000000000000000000000000..49d59c11da8e1f8de8bfe0911c6734c4349993b2 GIT binary patch literal 118 zcmV-+0Ez#20V^p=O;s>7HexU_00M=?w35^!2G(nt?ADf-Gu#d1tfF0o&im|gb%V$! zrKaTv-jcPFyO9XD~D{Ff%bxNXyJg)ypW!&0%QQl}xiYa-G~6Ssk?RO-lH| LJJaO>IKL0@AuS0hLkBj)Nc&-ZM`z>6L==v)U%E>8oggN!Hbvb$WbM+WD)4c8wt0D}9GU$rU>mlybpy%?+?TFQi0-kiT0H z#&~1X=>+6^F9F9AE>*|Cs-K;)x6#9>&)yFGu0{|~g0TlL{FP zz4{mxr^Q5*M#X74voBl)I5nL{7TT1p^d-}WcP8TTt)dLcEdJGZ_V!t<*cK~ZVp9)- NKI!I^egW=F!^3*Ohh6{x literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f b/tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f new file mode 100644 index 0000000000000000000000000000000000000000..415f40a66e519f4f508d37590237af22ab52b6fc GIT binary patch literal 178 zcmbjws5qsw93!TiZvRTi+B%)YnJF;nwt=gp_{bL@=X3PcAN z)&|W#wor3R@7>j!J%R6iUc7s1e8$_z`@e^x-&3p3pL0*Tw_j+v(tm7X@NE76Qxioa z&ToiI*n24IVASEN-yvIPyR9wX|Awb8xcoudi!`S^wI@i#uU+3;PPYH#&=5d@)ec*4 QvpwgJ75~L+6njV#0He85n*aa+ literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 b/tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 new file mode 100644 index 0000000000000000000000000000000000000000..c0a03a241e2809895730fb6ae6f5928a1e1cd747 GIT binary patch literal 132 zcmV-~0DJ#<0hNtS4#FT1MqP7?xqxO$E0n|->K%(B!XhWBEQfwDPURF7@>I`8AZ|If?x+8#g@ i9XD~D{Ff%bxNXbk~)5|Ey&0&ag>Z?8f+i_cDOJKcRcB}iY LJ-z<{P2mx8BYhWi literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/refs/heads/master b/tests/resources/userdiff/.gitted/refs/heads/master new file mode 100644 index 0000000000000000000000000000000000000000..2ec79ec86a14ae18a5aba85543fd26aa1f0e4351 GIT binary patch literal 41 ucmV~$$q@h`2n4Xd)o_kb4u{)+2`0JCO9^DHb5ajj_R1@r-~gu7Z2Wxw4-32i literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/after/file.html b/tests/resources/userdiff/after/file.html new file mode 100644 index 0000000000000000000000000000000000000000..2320e2f1e4d9e6201a8e15949a0c10a533fa51cd GIT binary patch literal 765 zcmajdT@HdU37`J#X&bvkWJDr^W;%GmX^_NJA~7hD7?em1rW@q3 rih4cqs;4j9KZoFax5q#t1BnbIG7w4(Br?#P9ZtKh%^0#sfTGzQAi>rZhHGlLQ5%Mh&$hL^WbPKL+=~C=kW54 zF&dpo;nqIWG#4{>kCO7(E|Xl}nR>KOK9z1Tj-1+h`L7JCz0<}9fy|^ z^fVP62(_0$LskFraGYtE#&T$kc}t3n+0fM_vdFlfN}VPZG8%gGF)GQ6i6)Io@^WTh vxC(G;I*lx}xmf8-rVqcFsMoiuG9RA}|FloAP*!xpqsr7=th@$bSo=NYHE2C?56;IY&-gSbwE zKl{nuKudip!iI^BjCq-6nQu?SwQt7G*?gPQb{t+Kn0YFaYT6<2P$|cHT7`J#X&bvkWJDr^W;%GmX^_NJA~7hD7?em1rW@q3 rih4cqs;4j9KZoFax5q#t1BnbIG7w4(Br?#