|
|
@@ -9,6 +9,7 @@ import ( |
|
|
|
"encoding/json" |
|
|
|
"fmt" |
|
|
|
"html/template" |
|
|
|
"strconv" |
|
|
|
"strings" |
|
|
|
"testing" |
|
|
|
|
|
|
@@ -153,11 +154,11 @@ func TestParsePatch_singlefile(t *testing.T) { |
|
|
|
name: "really weird filename", |
|
|
|
gitdiff: `diff --git "\\a/a b/file b/a a/file" "\\b/a b/file b/a a/file" |
|
|
|
index d2186f1..f5c8ed2 100644 |
|
|
|
--- "\\a/a b/file b/a a/file" |
|
|
|
+++ "\\b/a b/file b/a a/file" |
|
|
|
--- "\\a/a b/file b/a a/file" ` + ` |
|
|
|
+++ "\\b/a b/file b/a a/file" ` + ` |
|
|
|
@@ -1,3 +1,2 @@ |
|
|
|
Create a weird file. |
|
|
|
|
|
|
|
` + ` |
|
|
|
-and what does diff do here? |
|
|
|
\ No newline at end of file`, |
|
|
|
addition: 0, |
|
|
@@ -170,7 +171,7 @@ index d2186f1..f5c8ed2 100644 |
|
|
|
gitdiff: `diff --git "\\a/file with blanks" "\\b/file with blanks" |
|
|
|
deleted file mode 100644 |
|
|
|
index 898651a..0000000 |
|
|
|
--- "\\a/file with blanks" |
|
|
|
--- "\\a/file with blanks" ` + ` |
|
|
|
+++ /dev/null |
|
|
|
@@ -1,5 +0,0 @@ |
|
|
|
-a blank file |
|
|
@@ -263,7 +264,83 @@ index 6961180..9ba1a00 100644 |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
var diff = `diff --git "a/README.md" "b/README.md" |
|
|
|
// Test max lines |
|
|
|
diffBuilder := &strings.Builder{} |
|
|
|
|
|
|
|
var diff = `diff --git a/newfile2 b/newfile2 |
|
|
|
new file mode 100644 |
|
|
|
index 0000000..6bb8f39 |
|
|
|
--- /dev/null |
|
|
|
+++ b/newfile2 |
|
|
|
@@ -0,0 +1,35 @@ |
|
|
|
` |
|
|
|
diffBuilder.WriteString(diff) |
|
|
|
|
|
|
|
for i := 0; i < 35; i++ { |
|
|
|
diffBuilder.WriteString("+line" + strconv.Itoa(i) + "\n") |
|
|
|
} |
|
|
|
diff = diffBuilder.String() |
|
|
|
result, err := ParsePatch(20, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, strings.NewReader(diff)) |
|
|
|
if err != nil { |
|
|
|
t.Errorf("There should not be an error: %v", err) |
|
|
|
} |
|
|
|
if !result.Files[0].IsIncomplete { |
|
|
|
t.Errorf("Files should be incomplete! %v", result.Files[0]) |
|
|
|
} |
|
|
|
result, err = ParsePatch(40, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, strings.NewReader(diff)) |
|
|
|
if err != nil { |
|
|
|
t.Errorf("There should not be an error: %v", err) |
|
|
|
} |
|
|
|
if result.Files[0].IsIncomplete { |
|
|
|
t.Errorf("Files should not be incomplete! %v", result.Files[0]) |
|
|
|
} |
|
|
|
result, err = ParsePatch(40, 5, setting.Git.MaxGitDiffFiles, strings.NewReader(diff)) |
|
|
|
if err != nil { |
|
|
|
t.Errorf("There should not be an error: %v", err) |
|
|
|
} |
|
|
|
if !result.Files[0].IsIncomplete { |
|
|
|
t.Errorf("Files should be incomplete! %v", result.Files[0]) |
|
|
|
} |
|
|
|
|
|
|
|
// Test max characters |
|
|
|
diff = `diff --git a/newfile2 b/newfile2 |
|
|
|
new file mode 100644 |
|
|
|
index 0000000..6bb8f39 |
|
|
|
--- /dev/null |
|
|
|
+++ b/newfile2 |
|
|
|
@@ -0,0 +1,35 @@ |
|
|
|
` |
|
|
|
diffBuilder.Reset() |
|
|
|
diffBuilder.WriteString(diff) |
|
|
|
|
|
|
|
for i := 0; i < 33; i++ { |
|
|
|
diffBuilder.WriteString("+line" + strconv.Itoa(i) + "\n") |
|
|
|
} |
|
|
|
diffBuilder.WriteString("+line33") |
|
|
|
for i := 0; i < 512; i++ { |
|
|
|
diffBuilder.WriteString("0123456789ABCDEF") |
|
|
|
} |
|
|
|
diffBuilder.WriteByte('\n') |
|
|
|
diffBuilder.WriteString("+line" + strconv.Itoa(34) + "\n") |
|
|
|
diffBuilder.WriteString("+line" + strconv.Itoa(35) + "\n") |
|
|
|
diff = diffBuilder.String() |
|
|
|
|
|
|
|
result, err = ParsePatch(20, 4096, setting.Git.MaxGitDiffFiles, strings.NewReader(diff)) |
|
|
|
if err != nil { |
|
|
|
t.Errorf("There should not be an error: %v", err) |
|
|
|
} |
|
|
|
if !result.Files[0].IsIncomplete { |
|
|
|
t.Errorf("Files should be incomplete! %v", result.Files[0]) |
|
|
|
} |
|
|
|
result, err = ParsePatch(40, 4096, setting.Git.MaxGitDiffFiles, strings.NewReader(diff)) |
|
|
|
if err != nil { |
|
|
|
t.Errorf("There should not be an error: %v", err) |
|
|
|
} |
|
|
|
if !result.Files[0].IsIncomplete { |
|
|
|
t.Errorf("Files should be incomplete! %v", result.Files[0]) |
|
|
|
} |
|
|
|
|
|
|
|
diff = `diff --git "a/README.md" "b/README.md" |
|
|
|
--- a/README.md |
|
|
|
+++ b/README.md |
|
|
|
@@ -1,3 +1,6 @@ |
|
|
@@ -274,7 +351,7 @@ index 6961180..9ba1a00 100644 |
|
|
|
Docker Pulls |
|
|
|
+ cut off |
|
|
|
+ cut off` |
|
|
|
result, err := ParsePatch(setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, strings.NewReader(diff)) |
|
|
|
result, err = ParsePatch(setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, strings.NewReader(diff)) |
|
|
|
if err != nil { |
|
|
|
t.Errorf("ParsePatch failed: %s", err) |
|
|
|
} |