Author: dannas
Date: Thu Aug 5 18:33:51 2010
New Revision: 982726
URL: http://svn.apache.org/viewvc?rev=982726&view=rev
Log:
Adjust a C-unit test for parsing git diffs to include added and deleted
paths.
Currently the parser does not handle paths without a leading "a/" or "b/", i.e.
"/dev/null" that is used for added and deleted paths does not work.
* subversion/libsvn_diff/parse-diff-test.c
(git_tree_and_text_unidiff): Add an added and a deleted file to the patch
data.
(test_parse_git_tree_and_text_diff): Add checks for the new files.
(test_funcs): Mark test_parse_git_tree_and_text_diff() as XFailing.
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=982726&r1=982725&r2=982726&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_diff/parse-diff-test.c Thu Aug 5
18:33:51 2010
@@ -101,6 +101,22 @@ static const char *git_tree_and_text_uni
"@@ -1 +1,2 @@" NL
" This is the file 'mu'." NL
"+some more bytes to 'mu'" NL
+ "Index: new" NL
+ "===================================================================" NL
+ "git --diff a/new b/new" NL
+ "new file mode 100644" NL
+ "--- /dev/null\t(revision 0)" NL
+ "+++ b/new\t(working copy)" NL
+ "@@ -0,0 +1 @@" NL
+ "+This is the file 'new'." NL
+ "Index: A/B/lambda" NL
+ "===================================================================" NL
+ "git --diff a/A/B/lambda b/A/B/lambda" NL
+ "deleted file mode 100644" NL
+ "--- a/A/B/lambda\t(revision 2)" NL
+ "+++ /dev/null\t(working copy)" NL
+ "@@ -1 +0,0 @@" NL
+ "-This is the file 'labmda'." NL
"" NL;
/* Only the last git diff header is valid. The other ones either misses a
@@ -504,6 +520,45 @@ test_parse_git_tree_and_text_diff(apr_po
"some more bytes to 'mu'" NL,
pool));
+ SVN_ERR(svn_diff_parse_next_patch(&patch, patch_file,
+ FALSE, /* reverse */
+ FALSE, /* ignore_whitespace */
+ pool, pool));
+ SVN_TEST_ASSERT(patch);
+ SVN_TEST_ASSERT(! strcmp(patch->old_filename, "/dev/null"));
+ SVN_TEST_ASSERT(! strcmp(patch->new_filename, "new"));
+ SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
+ SVN_TEST_ASSERT(patch->hunks->nelts == 1);
+
+ hunk = APR_ARRAY_IDX(patch->hunks, 0, svn_hunk_t *);
+
+ SVN_ERR(check_content(hunk, TRUE,
+ "",
+ pool));
+
+ SVN_ERR(check_content(hunk, FALSE,
+ "This is the file 'new'." NL,
+ pool));
+
+ SVN_ERR(svn_diff_parse_next_patch(&patch, patch_file,
+ FALSE, /* reverse */
+ FALSE, /* ignore_whitespace */
+ pool, pool));
+ SVN_TEST_ASSERT(patch);
+ SVN_TEST_ASSERT(! strcmp(patch->old_filename, "A/B/lambda"));
+ SVN_TEST_ASSERT(! strcmp(patch->new_filename, "/dev/null"));
+ SVN_TEST_ASSERT(patch->operation == svn_diff_op_deleted);
+ SVN_TEST_ASSERT(patch->hunks->nelts == 1);
+
+ hunk = APR_ARRAY_IDX(patch->hunks, 0, svn_hunk_t *);
+
+ SVN_ERR(check_content(hunk, TRUE,
+ "This is the file 'lambda'." NL,
+ pool));
+
+ SVN_ERR(check_content(hunk, FALSE,
+ "",
+ pool));
return SVN_NO_ERROR;
}
@@ -864,7 +919,7 @@ struct svn_test_descriptor_t test_funcs[
"test unidiff parsing"),
SVN_TEST_PASS2(test_parse_git_diff,
"test git unidiff parsing"),
- SVN_TEST_PASS2(test_parse_git_tree_and_text_diff,
+ SVN_TEST_XFAIL2(test_parse_git_tree_and_text_diff,
"test git unidiff parsing of tree and text changes"),
SVN_TEST_XFAIL2(test_bad_git_diff_headers,
"test badly formatted git diff headers"),