mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-11 11:42:12 +02:00
Fix: Don't access a view if it's nil
The way the `if` expression in `deactivateContext` was composed, it was possible to have it to evaluate to `true` even though the `view` variable was `nil`. As far as I can tell, this seems to be only possible during tests. Nonetheless, I think the expression looks more "correct" this way.
This commit is contained in:
parent
28cdcddb0a
commit
3e3151f86a
@ -169,7 +169,7 @@ func (gui *Gui) deactivateContext(c Context) error {
|
||||
}
|
||||
|
||||
// if we are the kind of context that is sent to back upon deactivation, we should do that
|
||||
if view != nil && c.GetKind() == TEMPORARY_POPUP || c.GetKind() == PERSISTENT_POPUP || c.GetKey() == COMMIT_FILES_CONTEXT_KEY {
|
||||
if view != nil && (c.GetKind() == TEMPORARY_POPUP || c.GetKind() == PERSISTENT_POPUP || c.GetKey() == COMMIT_FILES_CONTEXT_KEY) {
|
||||
view.Visible = false
|
||||
}
|
||||
|
||||
|
40
pkg/gui/context_test.go
Normal file
40
pkg/gui/context_test.go
Normal file
@ -0,0 +1,40 @@
|
||||
package gui
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/jesseduffield/gocui"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestCanDeactivatePopupContextsWithoutViews(t *testing.T) {
|
||||
contexts := []func(gui *Gui) Context {
|
||||
func(gui *Gui) Context { return gui.State.Contexts.Credentials },
|
||||
func(gui *Gui) Context { return gui.State.Contexts.Confirmation },
|
||||
func(gui *Gui) Context { return gui.State.Contexts.CommitMessage },
|
||||
func(gui *Gui) Context { return gui.State.Contexts.Search },
|
||||
}
|
||||
|
||||
for _, c := range contexts {
|
||||
gui := NewDummyGui()
|
||||
context := c(gui)
|
||||
gui.g = &gocui.Gui{}
|
||||
|
||||
gui.deactivateContext(context)
|
||||
|
||||
// This really only checks a prerequisit, not the effect of deactivateContext
|
||||
view, _ := gui.g.View(context.GetViewName())
|
||||
assert.Nil(t, view, string(context.GetKey()))
|
||||
}
|
||||
}
|
||||
|
||||
func TestCanDeactivateCommitFilesContextsWithoutViews(t *testing.T) {
|
||||
gui := NewDummyGui()
|
||||
gui.g = &gocui.Gui{}
|
||||
|
||||
gui.deactivateContext(gui.State.Contexts.CommitFiles)
|
||||
|
||||
// This really only checks a prerequisite, not the effect of deactivateContext
|
||||
view, _ := gui.g.View(gui.State.Contexts.CommitFiles.GetViewName())
|
||||
assert.Nil(t, view)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user