diff --git a/pkg/integration/tests/patch_building/apply_with_modified_file_conflict.go b/pkg/integration/tests/patch_building/apply_with_modified_file_conflict.go new file mode 100644 index 000000000..42d4802b7 --- /dev/null +++ b/pkg/integration/tests/patch_building/apply_with_modified_file_conflict.go @@ -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() + }, +}) diff --git a/pkg/integration/tests/patch_building/apply_with_modified_file_no_conflict.go b/pkg/integration/tests/patch_building/apply_with_modified_file_no_conflict.go new file mode 100644 index 000000000..20d54e03e --- /dev/null +++ b/pkg/integration/tests/patch_building/apply_with_modified_file_no_conflict.go @@ -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() + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index 7d7bcf901..fa5aff628 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -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,