1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

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
2025-07-01 14:52:54 +02:00
parent 32bd9e6029
commit c440a208a6
3 changed files with 122 additions and 0 deletions

View File

@ -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()
},
})

View File

@ -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()
},
})

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,