diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-08-05 16:22:51 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-08-05 16:22:51 +0000 |
commit | cf46733632c7279a9fd0fe6ce26f9185a4ae82a9 (patch) | |
tree | da27775a2161723ef342e91af41a8b51fedef405 /subversion/tests/libsvn_diff/parse-diff-test.c | |
parent | bb0ef45f7c46b0ae221b26265ef98a768c33f820 (diff) | |
download | subversion-tarball-master.tar.gz |
subversion-1.9.7HEADsubversion-1.9.7master
Diffstat (limited to 'subversion/tests/libsvn_diff/parse-diff-test.c')
-rw-r--r-- | subversion/tests/libsvn_diff/parse-diff-test.c | 114 |
1 files changed, 112 insertions, 2 deletions
diff --git a/subversion/tests/libsvn_diff/parse-diff-test.c b/subversion/tests/libsvn_diff/parse-diff-test.c index 9a44369..d116f04 100644 --- a/subversion/tests/libsvn_diff/parse-diff-test.c +++ b/subversion/tests/libsvn_diff/parse-diff-test.c @@ -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_trailing_eol = " 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 * @@ -644,7 +667,7 @@ test_parse_property_diff(apr_pool_t *pool) prop_patch = apr_hash_get(patch->prop_patches, "prop_add", APR_HASH_KEY_STRING); - SVN_TEST_ASSERT(!strcmp("prop_add", prop_patch->name)); + SVN_TEST_STRING_ASSERT(prop_patch->name, "prop_add"); SVN_TEST_ASSERT(prop_patch->operation == svn_diff_op_added); hunks = prop_patch->hunks; @@ -957,9 +980,92 @@ test_parse_unidiff_lacking_trailing_eol(apr_pool_t *pool) 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; +} + /* ========================================================================== */ -struct svn_test_descriptor_t test_funcs[] = + +static int max_threads = 1; + +static struct svn_test_descriptor_t test_funcs[] = { SVN_TEST_NULL, SVN_TEST_PASS2(test_parse_unidiff, @@ -980,5 +1086,9 @@ struct svn_test_descriptor_t test_funcs[] = "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 }; + +SVN_TEST_MAIN |