diff --git a/pkg/integration/components/commit_description_panel_driver.go b/pkg/integration/components/commit_description_panel_driver.go index 253dc6f8762..0aa2007570f 100644 --- a/pkg/integration/components/commit_description_panel_driver.go +++ b/pkg/integration/components/commit_description_panel_driver.go @@ -52,6 +52,11 @@ func (self *CommitDescriptionPanelDriver) AddCoAuthor(author string) *CommitDesc return self } +func (self *CommitDescriptionPanelDriver) Clear() *CommitDescriptionPanelDriver { + self.getViewDriver().Clear() + return self +} + func (self *CommitDescriptionPanelDriver) Title(expected *TextMatcher) *CommitDescriptionPanelDriver { self.getViewDriver().Title(expected) diff --git a/pkg/integration/components/commit_message_panel_driver.go b/pkg/integration/components/commit_message_panel_driver.go index 68e1c639b33..047cc59b17d 100644 --- a/pkg/integration/components/commit_message_panel_driver.go +++ b/pkg/integration/components/commit_message_panel_driver.go @@ -39,20 +39,7 @@ func (self *CommitMessagePanelDriver) SwitchToDescription() *CommitDescriptionPa } func (self *CommitMessagePanelDriver) Clear() *CommitMessagePanelDriver { - // clearing multiple times in case there's multiple lines - // (the clear button only clears a single line at a time) - maxAttempts := 100 - for i := 0; i < maxAttempts+1; i++ { - if self.getViewDriver().getView().Buffer() == "" { - break - } - - self.t.press(ClearKey) - if i == maxAttempts { - panic("failed to clear commit message panel") - } - } - + self.getViewDriver().Clear() return self } diff --git a/pkg/integration/components/view_driver.go b/pkg/integration/components/view_driver.go index 189151f61db..44707289c3b 100644 --- a/pkg/integration/components/view_driver.go +++ b/pkg/integration/components/view_driver.go @@ -40,6 +40,24 @@ func (self *ViewDriver) Title(expected *TextMatcher) *ViewDriver { return self } +func (self *ViewDriver) Clear() *ViewDriver { + // clearing multiple times in case there's multiple lines + // (the clear button only clears a single line at a time) + maxAttempts := 100 + for i := 0; i < maxAttempts+1; i++ { + if self.getView().Buffer() == "" { + break + } + + self.t.press(ClearKey) + if i == maxAttempts { + panic("failed to clear view buffer") + } + } + + return self +} + // asserts that the view has lines matching the given matchers. One matcher must be passed for each line. // If you only care about the top n lines, use the TopLines method instead. // If you only care about a subset of lines, use the ContainsLines method instead. diff --git a/pkg/integration/tests/commit/preserve_commit_message.go b/pkg/integration/tests/commit/preserve_commit_message.go index e9297ab76bf..ab136090428 100644 --- a/pkg/integration/tests/commit/preserve_commit_message.go +++ b/pkg/integration/tests/commit/preserve_commit_message.go @@ -28,6 +28,8 @@ var PreserveCommitMessage = NewIntegrationTest(NewIntegrationTestArgs{ Type("second paragraph"). Cancel() + t.FileSystem().PathPresent(".git/LAZYGIT_PENDING_COMMIT") + t.Views().Files(). IsFocused(). Press(keys.Files.CommitChanges) @@ -35,6 +37,22 @@ var PreserveCommitMessage = NewIntegrationTest(NewIntegrationTestArgs{ t.ExpectPopup().CommitMessagePanel(). Content(Equals("my commit message")). SwitchToDescription(). - Content(Equals("first paragraph\n\nsecond paragraph")) + Content(Equals("first paragraph\n\nsecond paragraph")). + Clear(). + SwitchToSummary(). + Clear(). + Cancel() + + t.FileSystem().PathNotPresent(".git/LAZYGIT_PENDING_COMMIT") + + t.Views().Files(). + IsFocused(). + Press(keys.Files.CommitChanges) + + t.ExpectPopup().CommitMessagePanel(). + Type("my new commit message"). + Confirm() + + t.FileSystem().PathNotPresent(".git/LAZYGIT_PENDING_COMMIT") }, })