Add tests for applying a patch when there's a modified file

The tests show that this currently fails with the confusing error message "does
not match index", regardless of whether the patch conflicts with the
modifications or not. We'll improve this in the next commit.

I don't bother adding tests for reverting a patch, as the code is basically the
same as for apply.
This commit is contained in:
Stefan Haller committed 2025-07-02 16:19:06 +02:00
1 parent 32bd9e6029
commit c440a208a6
3 files changed
+122

No files matched your search

@@ -0,0 +1,60 @@
package patch_building
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var ApplyWithModifiedFileConflict = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Apply a custom patch, with a modified file in the working tree that conflicts with the patch",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.NewBranch("branch-a")
shell.CreateFileAndAdd("file1", "1\n2\n3\n")
shell.Commit("first commit")
shell.NewBranch("branch-b")
shell.UpdateFileAndAdd("file1", "11\n2\n3\n")
shell.Commit("update")
shell.Checkout("branch-a")
shell.UpdateFile("file1", "111\n2\n3\n")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Branches().
Focus().
Lines(
Contains("branch-a").IsSelected(),
Contains("branch-b"),
).
Press(keys.Universal.NextItem).
PressEnter()
t.Views().SubCommits().
IsFocused().
Lines(
Contains("update").IsSelected(),
Contains("first commit"),
).
PressEnter()
t.Views().CommitFiles().
IsFocused().
Lines(
Equals("M file1").IsSelected(),
).
PressPrimaryAction()
t.Views().Information().Content(Contains("Building patch"))
t.Views().Secondary().Content(Contains("-1\n+11\n"))
t.Common().SelectPatchOption(MatchesRegexp(`Apply patch$`))
t.ExpectPopup().Alert().Title(Equals("Error")).
Content(Equals("error: file1: does not match index")).
Confirm()
},
})
@@ -0,0 +1,60 @@
package patch_building
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var ApplyWithModifiedFileNoConflict = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Apply a custom patch, with a modified file in the working tree that does not conflict with the patch",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.NewBranch("branch-a")
shell.CreateFileAndAdd("file1", "1\n2\n3\n")
shell.Commit("first commit")
shell.NewBranch("branch-b")
shell.UpdateFileAndAdd("file1", "1\n2\n3\n4\n")
shell.Commit("update")
shell.Checkout("branch-a")
shell.UpdateFile("file1", "11\n2\n3\n")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Branches().
Focus().
Lines(
Contains("branch-a").IsSelected(),
Contains("branch-b"),
).
Press(keys.Universal.NextItem).
PressEnter()
t.Views().SubCommits().
IsFocused().
Lines(
Contains("update").IsSelected(),
Contains("first commit"),
).
PressEnter()
t.Views().CommitFiles().
IsFocused().
Lines(
Equals("M file1").IsSelected(),
).
PressPrimaryAction()
t.Views().Information().Content(Contains("Building patch"))
t.Views().Secondary().Content(Contains("3\n+4"))
t.Common().SelectPatchOption(MatchesRegexp(`Apply patch$`))
t.ExpectPopup().Alert().Title(Equals("Error")).
Content(Equals("error: file1: does not match index")).
Confirm()
},
})
+2
View File
@@ -300,6 +300,8 @@ var tests = []*components.IntegrationTest{
patch_building.Apply,
patch_building.ApplyInReverse,
patch_building.ApplyInReverseWithConflict,
patch_building.ApplyWithModifiedFileConflict,
patch_building.ApplyWithModifiedFileNoConflict,
patch_building.EditLineInPatchBuildingPanel,
patch_building.MoveRangeToIndex,
patch_building.MoveToEarlierCommit,