From 6bab678bed726e9d5371cd10050ea217ab076c24 Mon Sep 17 00:00:00 2001 From: zeripath Date: Fri, 16 Oct 2020 18:13:18 +0100 Subject: 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 * Add testcase Signed-off-by: Andrew Thornton * fix comment * simplify error handling Signed-off-by: Andrew Thornton * never return io.EOF Signed-off-by: Andrew Thornton Co-authored-by: Lauris BH --- services/gitdiff/gitdiff_test.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'services/gitdiff/gitdiff_test.go') 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 { -- cgit v1.2.3