Add patch option WillBeAppliedReverse

It's not used yet, but covered with tests already.
This commit is contained in:
Stefan Haller 2023-02-26 13:48:10 +01:00
parent f76cc27956
commit c79e360584
3 changed files with 86 additions and 15 deletions

View file

@ -69,6 +69,20 @@ index e48a11c..b2ab81b 100644
...
`
const twoChangesInOneHunk = `diff --git a/filename b/filename
index 9320895..6d79956 100644
--- a/filename
+++ b/filename
@@ -1,5 +1,5 @@
apple
-grape
+kiwi
orange
-pear
+banana
lemon
`
const newFile = `diff --git a/newfile b/newfile
new file mode 100644
index 0000000..4e680cc
@ -101,13 +115,14 @@ const exampleHunk = `@@ -1,5 +1,5 @@
// TestModifyPatchForRange is a function.
func TestModifyPatchForRange(t *testing.T) {
type scenario struct {
testName string
filename string
diffText string
firstLineIndex int
lastLineIndex int
reverse bool
expected string
testName string
filename string
diffText string
firstLineIndex int
lastLineIndex int
reverse bool
willBeAppliedReverse bool
expected string
}
scenarios := []scenario{
@ -506,6 +521,44 @@ func TestModifyPatchForRange(t *testing.T) {
@@ -1,1 +0,0 @@
-new line
\ No newline at end of file
`,
},
{
testName: "adding part of a hunk",
filename: "filename",
firstLineIndex: 6,
lastLineIndex: 7,
reverse: false,
willBeAppliedReverse: false,
diffText: twoChangesInOneHunk,
expected: `--- a/filename
+++ b/filename
@@ -1,5 +1,5 @@
apple
-grape
+kiwi
orange
pear
lemon
`,
},
{
testName: "adding part of a hunk, will-be-applied-reverse",
filename: "filename",
firstLineIndex: 6,
lastLineIndex: 7,
reverse: false,
willBeAppliedReverse: true,
diffText: twoChangesInOneHunk,
expected: `--- a/filename
+++ b/filename
@@ -1,5 +1,5 @@
apple
-grape
+kiwi
orange
banana
lemon
`,
},
}
@ -514,7 +567,11 @@ func TestModifyPatchForRange(t *testing.T) {
s := s
t.Run(s.testName, func(t *testing.T) {
result := ModifiedPatchForRange(nil, s.filename, s.diffText, s.firstLineIndex, s.lastLineIndex,
PatchOptions{Reverse: s.reverse, KeepOriginalHeader: false})
PatchOptions{
Reverse: s.reverse,
WillBeAppliedReverse: s.willBeAppliedReverse,
KeepOriginalHeader: false,
})
if !assert.Equal(t, s.expected, result) {
fmt.Println(result)
}