1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-19 21:28:28 +02:00

Use ErrorToast instead of error panel when invoking a disabled command

This commit is contained in:
Stefan Haller 2023-12-22 17:31:45 +01:00
parent 99a3ccde71
commit 09a24ee97d
13 changed files with 53 additions and 72 deletions

View File

@ -173,7 +173,8 @@ func (self *MenuContext) GetKeybindings(opts types.KeybindingsOpts) []*types.Bin
func (self *MenuContext) OnMenuPress(selectedItem *types.MenuItem) error {
if selectedItem != nil && selectedItem.DisabledReason != "" {
return self.c.ErrorMsg(selectedItem.DisabledReason)
self.c.ErrorToast(self.c.Tr.DisabledMenuItemPrefix + selectedItem.DisabledReason)
return nil
}
if err := self.c.PopContext(); err != nil {

View File

@ -416,7 +416,8 @@ func (gui *Gui) callKeybindingHandler(binding *types.Binding) error {
disabledReason = binding.GetDisabledReason()
}
if disabledReason != "" {
return gui.c.ErrorMsg(disabledReason)
gui.c.ErrorToast(gui.Tr.DisabledMenuItemPrefix + disabledReason)
return nil
}
return binding.Handler()
}

View File

@ -18,10 +18,12 @@ func (self *MenuDriver) Title(expected *TextMatcher) *MenuDriver {
return self
}
func (self *MenuDriver) Confirm() {
func (self *MenuDriver) Confirm() *MenuDriver {
self.checkNecessaryChecksCompleted()
self.getViewDriver().PressEnter()
return self
}
func (self *MenuDriver) Cancel() {
@ -72,6 +74,11 @@ func (self *MenuDriver) Tooltip(option *TextMatcher) *MenuDriver {
return self
}
func (self *MenuDriver) Tap(f func()) *MenuDriver {
self.getViewDriver().Tap(f)
return self
}
func (self *MenuDriver) checkNecessaryChecksCompleted() {
if !self.hasCheckedTitle {
self.t.Fail("You must check the title of a menu popup by calling Title() before calling Confirm()/Cancel().")

View File

@ -37,12 +37,11 @@ var Delete = NewIntegrationTest(NewIntegrationTestArgs{
Tooltip(Contains("You cannot delete the checked out branch!")).
Title(Equals("Delete branch 'branch-three'?")).
Select(Contains("Delete local branch")).
Confirm()
t.ExpectPopup().
Alert().
Title(Equals("Error")).
Content(Contains("You cannot delete the checked out branch!")).
Confirm()
Confirm().
Tap(func() {
t.ExpectToast(Contains("You cannot delete the checked out branch!"))
}).
Cancel()
}).
SelectNextItem().
Press(keys.Universal.Remove).

View File

@ -48,11 +48,11 @@ var RebaseToUpstream = NewIntegrationTest(NewIntegrationTestArgs{
Title(Equals("Upstream options")).
Select(Contains("Rebase checked-out branch onto upstream of selected branch")).
Tooltip(Contains("Disabled: The selected branch has no upstream (or the upstream is not stored locally)")).
Confirm()
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Equals("The selected branch has no upstream (or the upstream is not stored locally)")).
Confirm()
Confirm().
Tap(func() {
t.ExpectToast(Equals("Disabled: The selected branch has no upstream (or the upstream is not stored locally)"))
}).
Cancel()
}).
SelectNextItem().
Lines(

View File

@ -42,11 +42,11 @@ var ResetToUpstream = NewIntegrationTest(NewIntegrationTestArgs{
Title(Equals("Upstream options")).
Select(Contains("Reset checked-out branch onto upstream of selected branch")).
Tooltip(Contains("Disabled: The selected branch has no upstream (or the upstream is not stored locally)")).
Confirm()
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Equals("The selected branch has no upstream (or the upstream is not stored locally)")).
Confirm()
Confirm().
Tap(func() {
t.ExpectToast(Equals("Disabled: The selected branch has no upstream (or the upstream is not stored locally)"))
}).
Cancel()
}).
SelectNextItem().
Lines(

View File

@ -30,12 +30,11 @@ var CopyMenu = NewIntegrationTest(NewIntegrationTestArgs{
Title(Equals("Copy to clipboard")).
Select(Contains("File name")).
Tooltip(Equals("Disabled: Nothing to copy")).
Confirm()
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Equals("Nothing to copy")).
Confirm()
Confirm().
Tap(func() {
t.ExpectToast(Equals("Disabled: Nothing to copy"))
}).
Cancel()
})
t.Shell().
@ -56,12 +55,11 @@ var CopyMenu = NewIntegrationTest(NewIntegrationTestArgs{
Title(Equals("Copy to clipboard")).
Select(Contains("Diff of selected file")).
Tooltip(Contains("Disabled: Nothing to copy")).
Confirm()
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Equals("Nothing to copy")).
Confirm()
Confirm().
Tap(func() {
t.ExpectToast(Equals("Disabled: Nothing to copy"))
}).
Cancel()
}).
Press(keys.Files.CopyFileInfoToClipboard).
Tap(func() {
@ -69,12 +67,11 @@ var CopyMenu = NewIntegrationTest(NewIntegrationTestArgs{
Title(Equals("Copy to clipboard")).
Select(Contains("Diff of all files")).
Tooltip(Contains("Disabled: Nothing to copy")).
Confirm()
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Equals("Nothing to copy")).
Confirm()
Confirm().
Tap(func() {
t.ExpectToast(Equals("Disabled: Nothing to copy"))
}).
Cancel()
})
t.Shell().

View File

@ -34,10 +34,7 @@ var AmendNonHeadCommitDuringRebase = NewIntegrationTest(NewIntegrationTestArgs{
NavigateToLine(Contains(commit)).
Press(keys.Commits.AmendToCommit)
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Contains("Can't perform this action during a rebase")).
Confirm()
t.ExpectToast(Contains("Can't perform this action during a rebase"))
}
},
})

View File

@ -29,9 +29,6 @@ var EditNonTodoCommitDuringRebase = NewIntegrationTest(NewIntegrationTestArgs{
NavigateToLine(Contains("commit 01")).
Press(keys.Universal.Edit)
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Contains("Can't perform this action during a rebase")).
Confirm()
t.ExpectToast(Contains("Can't perform this action during a rebase"))
},
})

View File

@ -39,9 +39,6 @@ var EditTheConflCommit = NewIntegrationTest(NewIntegrationTestArgs{
NavigateToLine(Contains("<-- YOU ARE HERE --- commit three")).
Press(keys.Commits.RenameCommit)
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Contains("Changing this kind of rebase todo entry is not allowed")).
Confirm()
t.ExpectToast(Contains("Changing this kind of rebase todo entry is not allowed"))
},
})

View File

@ -24,10 +24,7 @@ var FixupFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
NavigateToLine(Contains("commit 01")).
Press(keys.Commits.MarkCommitAsFixup).
Tap(func() {
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Equals("There's no commit below to squash into")).
Confirm()
t.ExpectToast(Equals("Disabled: There's no commit below to squash into"))
}).
Lines(
Contains("commit 02"),

View File

@ -50,13 +50,9 @@ var QuickStart = NewIntegrationTest(NewIntegrationTestArgs{
Contains("initial commit"),
).
// Verify we can't quick start from main
Press(keys.Commits.StartInteractiveRebase).
Tap(func() {
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Contains("Cannot start interactive rebase: the HEAD commit is a merge commit or is present on the main branch, so there is no appropriate base commit to start the rebase from. You can start an interactive rebase from a specific commit by selecting the commit and pressing `e`.")).
Confirm()
})
Press(keys.Commits.StartInteractiveRebase)
t.ExpectToast(Equals("Disabled: Cannot start interactive rebase: the HEAD commit is a merge commit or is present on the main branch, so there is no appropriate base commit to start the rebase from. You can start an interactive rebase from a specific commit by selecting the commit and pressing `e`."))
t.Views().Branches().
Focus().
@ -80,15 +76,10 @@ var QuickStart = NewIntegrationTest(NewIntegrationTestArgs{
Contains("initial commit"),
).
// Try again, verify we fail because we're already rebasing
Press(keys.Commits.StartInteractiveRebase).
Tap(func() {
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Contains("Can't perform this action during a rebase")).
Confirm()
Press(keys.Commits.StartInteractiveRebase)
t.Common().AbortRebase()
})
t.ExpectToast(Equals("Disabled: Can't perform this action during a rebase"))
t.Common().AbortRebase()
// Verify if a merge commit is present on the branch we start from there
t.Views().Branches().

View File

@ -24,10 +24,7 @@ var SquashDownFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
NavigateToLine(Contains("commit 01")).
Press(keys.Commits.SquashDown).
Tap(func() {
t.ExpectPopup().Alert().
Title(Equals("Error")).
Content(Equals("There's no commit below to squash into")).
Confirm()
t.ExpectToast(Equals("Disabled: There's no commit below to squash into"))
}).
Lines(
Contains("commit 02"),