You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2014/06/04 16:45:28 UTC
svn commit: r1600248 -
/subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c
Author: stsp
Date: Wed Jun 4 14:45:27 2014
New Revision: 1600248
URL: http://svn.apache.org/r1600248
Log:
Add a regression test for diff parsing with svn:mergeinfo.
* subversion/tests/libsvn_diff/parse-diff-test.c
(unidiff_with_mergeinfo): New test diff.
(test_parse_unidiff_with_mergeinfo, test_funcs): New test.
Modified:
subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c
Modified: subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c?rev=1600248&r1=1600247&r2=1600248&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c Wed Jun 4 14:45:27 2014
@@ -25,6 +25,8 @@
#include "../svn_test.h"
#include "svn_diff.h"
+#include "svn_hash.h"
+#include "svn_mergeinfo.h"
#include "svn_pools.h"
#include "svn_utf.h"
@@ -253,6 +255,27 @@ static const char *unidiff_lacking_trail
" This is the file 'gamma'." NL
"+some more bytes to 'gamma'"; /* Don't add NL after this line */
+static const char *unidiff_with_mergeinfo =
+ "Index: A/C" NL
+ "===================================================================" NL
+ "--- A/C\t(revision 2)" NL
+ "+++ A/C\t(working copy)" NL
+ "Modified: svn:ignore" NL
+ "## -7,6 +7,7 ##" NL
+ " configure" NL
+ " libtool" NL
+ " .gdb_history" NL
+ "+.swig_checked" NL
+ " *.orig" NL
+ " *.rej" NL
+ " TAGS" NL
+ "Modified: svn:mergeinfo" NL
+ "## -0,1 +0,3 ##" NL
+ " Reverse-merged /subversion/branches/1.6.x-r935631:r952683-955333" NL
+ " /subversion/branches/nfc-nfd-aware-client:r870276,870376 ããã¼ã¸ãã¾ãã"NL
+ " Fusionné /subversion/branches/1.7.x-r1507044:r1507300-1511568" NL
+ " Merged /subversion/branches/1.8.x-openssl-dirs:r1535139" NL;
+/* The above diff intentionally contains i18n versions of some lines. */
/* Create a PATCH_FILE containing the contents of DIFF. */
static svn_error_t *
@@ -957,6 +980,86 @@ test_parse_unidiff_lacking_trailing_eol(
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_parse_unidiff_with_mergeinfo(apr_pool_t *pool)
+{
+ svn_patch_file_t *patch_file;
+ svn_boolean_t reverse;
+ svn_boolean_t ignore_whitespace;
+ int i;
+ apr_pool_t *iterpool;
+
+ reverse = FALSE;
+ ignore_whitespace = FALSE;
+ iterpool = svn_pool_create(pool);
+ for (i = 0; i < 2; i++)
+ {
+ svn_patch_t *patch;
+ svn_mergeinfo_t mergeinfo;
+ svn_mergeinfo_t reverse_mergeinfo;
+ svn_rangelist_t *rangelist;
+ svn_merge_range_t *range;
+
+ svn_pool_clear(iterpool);
+
+ SVN_ERR(create_patch_file(&patch_file, unidiff_with_mergeinfo,
+ pool));
+
+ SVN_ERR(svn_diff_parse_next_patch(&patch, patch_file, reverse,
+ ignore_whitespace, iterpool,
+ iterpool));
+ SVN_TEST_ASSERT(patch);
+ SVN_TEST_STRING_ASSERT(patch->old_filename, "A/C");
+ SVN_TEST_STRING_ASSERT(patch->new_filename, "A/C");
+
+ /* svn:ignore */
+ SVN_TEST_ASSERT(apr_hash_count(patch->prop_patches) == 1);
+
+ SVN_TEST_ASSERT(patch->mergeinfo);
+ SVN_TEST_ASSERT(patch->reverse_mergeinfo);
+
+ if (reverse)
+ {
+ mergeinfo = patch->reverse_mergeinfo;
+ reverse_mergeinfo = patch->mergeinfo;
+ }
+ else
+ {
+ mergeinfo = patch->mergeinfo;
+ reverse_mergeinfo = patch->reverse_mergeinfo;
+ }
+
+ rangelist = svn_hash_gets(reverse_mergeinfo,
+ "/subversion/branches/1.6.x-r935631");
+ SVN_TEST_ASSERT(rangelist);
+ SVN_TEST_ASSERT(rangelist->nelts == 1);
+ range = APR_ARRAY_IDX(rangelist, 0, svn_merge_range_t *);
+ SVN_TEST_ASSERT(range->start == 952682);
+ SVN_TEST_ASSERT(range->end == 955333);
+
+ rangelist = svn_hash_gets(mergeinfo,
+ "/subversion/branches/nfc-nfd-aware-client");
+ SVN_TEST_ASSERT(rangelist);
+ SVN_TEST_ASSERT(rangelist->nelts == 2);
+ range = APR_ARRAY_IDX(rangelist, 0, svn_merge_range_t *);
+ SVN_TEST_ASSERT(range->end == 870276);
+ range = APR_ARRAY_IDX(rangelist, 1, svn_merge_range_t *);
+ SVN_TEST_ASSERT(range->end == 870376);
+
+ rangelist = svn_hash_gets(mergeinfo,
+ "/subversion/branches/1.8.x-openssl-dirs");
+ SVN_TEST_ASSERT(rangelist);
+ SVN_TEST_ASSERT(rangelist->nelts == 1);
+ range = APR_ARRAY_IDX(rangelist, 0, svn_merge_range_t *);
+ SVN_TEST_ASSERT(range->end == 1535139);
+
+ reverse = !reverse;
+ SVN_ERR(svn_diff_close_patch_file(patch_file, pool));
+ }
+ svn_pool_destroy(iterpool);
+ return SVN_NO_ERROR;
+}
+
/* ========================================================================== */
@@ -983,6 +1086,8 @@ static struct svn_test_descriptor_t test
"test git diffs with spaces in paths"),
SVN_TEST_PASS2(test_parse_unidiff_lacking_trailing_eol,
"test parsing unidiffs lacking trailing eol"),
+ SVN_TEST_PASS2(test_parse_unidiff_with_mergeinfo,
+ "test parsing unidiffs with mergeinfo"),
SVN_TEST_NULL
};