summaryrefslogtreecommitdiffstats
path: root/services/gitdiff/gitdiff_test.go
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2020-10-16 18:13:18 +0100
committerGitHub <noreply@github.com>2020-10-16 13:13:18 -0400
commit6bab678bed726e9d5371cd10050ea217ab076c24 (patch)
tree28f99213856802be65a965f91441742b0e20ae4a /services/gitdiff/gitdiff_test.go
parentb222dbc1d1df2559206ec1c27928d4666a48f0e8 (diff)
downloadgitea-6bab678bed726e9d5371cd10050ea217ab076c24.tar.gz
gitea-6bab678bed726e9d5371cd10050ea217ab076c24.zip
Fix diff skipping lines (#13154)
* Fix diff skipping lines ParsePatch previously just skipped all lines that start with "+++ " or "--- " and makes no attempt to see these lines in context. This PR rewrites ParsePatch to pay attention to context and position within a patch, ensuring that --- and +++ are only skipped if appropriate. This PR also fixes several issues with incomplete files. Fix https://codeberg.org/Codeberg/Community/issues/308 Fix #13153 Signed-off-by: Andrew Thornton <art27@cantab.net> * Add testcase Signed-off-by: Andrew Thornton <art27@cantab.net> * fix comment * simplify error handling Signed-off-by: Andrew Thornton <art27@cantab.net> * never return io.EOF Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv>
Diffstat (limited to 'services/gitdiff/gitdiff_test.go')
-rw-r--r--services/gitdiff/gitdiff_test.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/services/gitdiff/gitdiff_test.go b/services/gitdiff/gitdiff_test.go
index b90ad657f6..64cd4f1c21 100644
--- a/services/gitdiff/gitdiff_test.go
+++ b/services/gitdiff/gitdiff_test.go
@@ -182,6 +182,27 @@ rename to a b/a a/file b/b file
oldFilename: "a b/file b/a a/file",
filename: "a b/a a/file b/b file",
},
+ {
+ name: "minuses-and-pluses",
+ gitdiff: `diff --git a/minuses-and-pluses b/minuses-and-pluses
+index 6961180..9ba1a00 100644
+--- a/minuses-and-pluses
++++ b/minuses-and-pluses
+@@ -1,4 +1,4 @@
+--- 1st line
+-++ 2nd line
+--- 3rd line
+-++ 4th line
++++ 1st line
++-- 2nd line
++++ 3rd line
++-- 4th line
+`,
+ oldFilename: "minuses-and-pluses",
+ filename: "minuses-and-pluses",
+ addition: 4,
+ deletion: 4,
+ },
}
for _, testcase := range tests {