Author: dannas
Date: Fri Jul 30 10:52:41 2010
New Revision: 980730

URL: http://svn.apache.org/viewvc?rev=980730&view=rev
Log:
Make 'svn diff' print the correct hunk delimiters for all property hunks. At
the same time, adjust expected paths for an earlier XFailing test.

Previously, only the last hunk would have '##' delimiters.

* subversion/libsvn_diff/diff_memory.c
  (unified_output_baton_t): Add field 'hunk_delimiter'
  (output_unified_diff_modified): Call output_unfied_flush_hunk() with
    the hunk_delimiter from the baton.
  (svn_diff_mem_string_output_unified2): Initialize 'btn->hunk_delimiter'.

* subversion/tests/cmdline/diff_tests.py
  (diff_prop_multiple_hunks): Adjust expected paths.
  (test_list): Remove XFail for diff_prop_multiple_hunks().

Modified:
    subversion/trunk/subversion/libsvn_diff/diff_memory.c
    subversion/trunk/subversion/tests/cmdline/diff_tests.py

Modified: subversion/trunk/subversion/libsvn_diff/diff_memory.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/diff_memory.c?rev=980730&r1=980729&r2=980730&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/diff_memory.c (original)
+++ subversion/trunk/subversion/libsvn_diff/diff_memory.c Fri Jul 30 10:52:41 
2010
@@ -353,6 +353,10 @@ typedef struct unified_output_baton_t
   apr_off_t hunk_length[2]; /* 0 == original; 1 == modified */
   apr_off_t hunk_start[2];  /* 0 == original; 1 == modified */
 
+  /* The delimiters of the hunk header, '@@' for text hunks and '##' for
+   * property hunks. */
+  const char *hunk_delimiter;
+
   /* Pool for allocation of temporary memory in the callbacks
      Should be cleared on entry of each iteration of a callback */
   apr_pool_t *pool;
@@ -516,7 +520,7 @@ output_unified_diff_modified(void *baton
   targ_mod = modified_start;
 
   if (btn->next_token + SVN_DIFF__UNIFIED_CONTEXT_SIZE < targ_orig)
-    SVN_ERR(output_unified_flush_hunk(btn, NULL));
+    SVN_ERR(output_unified_flush_hunk(btn, btn->hunk_delimiter));
 
   if (btn->hunk_length[0] == 0
       && btn->hunk_length[1] == 0)
@@ -569,6 +573,7 @@ svn_diff_mem_string_output_unified2(svn_
       baton.pool = svn_pool_create(pool);
       baton.header_encoding = header_encoding;
       baton.hunk = svn_stringbuf_create("", pool);
+      baton.hunk_delimiter = hunk_delimiter;
 
       SVN_ERR(svn_utf_cstring_from_utf8_ex2
               (&(baton.prefix_str[unified_output_context]), " ",

Modified: subversion/trunk/subversion/tests/cmdline/diff_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/diff_tests.py?rev=980730&r1=980729&r2=980730&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/diff_tests.py Fri Jul 30 10:52:41 
2010
@@ -3475,12 +3475,12 @@ def diff_prop_multiple_hunks(sbox):
   svntest.main.run_svn(None,
                        "propset", "prop", prop_val, iota_path)
   expected_output = [
-    "Index: iota\n",
+    "Index: %s\n" % iota_path,
     "===================================================================\n",
-    "--- iota\t(revision 2)\n",
-    "+++ iota\t(working copy)\n",
+    "--- %s\t(revision 2)\n" % iota_path,
+    "+++ %s\t(working copy)\n" % iota_path,
     "\n",
-    "Property changes on: iota\n",
+    "Property changes on: %s\n" % iota_path,
     "___________________________________________________________________\n",
     "Modified: prop\n",
     "## -1,6 +1,7 ##\n",
@@ -3564,7 +3564,7 @@ test_list = [ None,
               diff_git_format_url_wc,
               diff_git_format_url_url,
               XFail(diff_prop_missing_context),
-              XFail(diff_prop_multiple_hunks),
+              diff_prop_multiple_hunks,
               ]
 
 if __name__ == '__main__':


Reply via email to