fix namespace suggestion error on context switch (#2315)

mine
Jayson Wang 2023-11-28 22:46:44 +08:00 committed by GitHub
parent b360de3565
commit c639b6a5cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 35 deletions

View File

@ -151,11 +151,6 @@ func (a *App) initSignals() {
} }
func (a *App) suggestCommand() model.SuggestionFunc { func (a *App) suggestCommand() model.SuggestionFunc {
namespaceNames, err := a.namespaceNames()
if err != nil {
log.Error().Err(err).Msg("failed to list namespaces")
}
contextNames, err := a.contextNames() contextNames, err := a.contextNames()
if err != nil { if err != nil {
log.Error().Err(err).Msg("failed to list contexts") log.Error().Err(err).Msg("failed to list contexts")
@ -176,6 +171,11 @@ func (a *App) suggestCommand() model.SuggestionFunc {
} }
} }
namespaceNames, err := a.namespaceNames()
if err != nil {
log.Error().Err(err).Msg("failed to list namespaces")
}
entries = append(entries, suggestSubCommand(s, namespaceNames, contextNames)...) entries = append(entries, suggestSubCommand(s, namespaceNames, contextNames)...)
if len(entries) == 0 { if len(entries) == 0 {
return nil return nil

View File

@ -0,0 +1,38 @@
// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s
package view
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_suggestSubCommand(t *testing.T) {
namespaceNames := []string{"kube-system", "kube-public", "default", "nginx-ingress"}
contextNames := []string{"develop", "test", "pre", "prod"}
tests := []struct {
Command string
Suggestions []string
}{
{Command: "q", Suggestions: nil},
{Command: "xray dp", Suggestions: nil},
{Command: "help k", Suggestions: nil},
{Command: "ctx p", Suggestions: []string{"re", "rod"}},
{Command: "ctx p", Suggestions: []string{"re", "rod"}},
{Command: "ctx pr", Suggestions: []string{"e", "od"}},
{Command: "context d", Suggestions: []string{"evelop"}},
{Command: "contexts t", Suggestions: []string{"est"}},
{Command: "po ", Suggestions: nil},
{Command: "po x", Suggestions: nil},
{Command: "po k", Suggestions: []string{"ube-system", "ube-public"}},
{Command: "po kube-", Suggestions: []string{"system", "public"}},
}
for _, tt := range tests {
got := suggestSubCommand(tt.Command, namespaceNames, contextNames)
assert.Equal(t, tt.Suggestions, got)
}
}

View File

@ -1,46 +1,19 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Copyright Authors of K9s // Copyright Authors of K9s
package view package view_test
import ( import (
"testing" "testing"
"github.com/derailed/k9s/internal/config" "github.com/derailed/k9s/internal/config"
"github.com/derailed/k9s/internal/view"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestAppNew(t *testing.T) { func TestAppNew(t *testing.T) {
a := NewApp(config.NewConfig(ks{})) a := view.NewApp(config.NewConfig(ks{}))
_ = a.Init("blee", 10) _ = a.Init("blee", 10)
assert.Equal(t, 11, len(a.GetActions())) assert.Equal(t, 11, len(a.GetActions()))
} }
func Test_suggestSubCommand(t *testing.T) {
namespaceNames := []string{"kube-system", "kube-public", "default", "nginx-ingress"}
contextNames := []string{"develop", "test", "pre", "prod"}
tests := []struct {
Command string
Suggestions []string
}{
{Command: "q", Suggestions: nil},
{Command: "xray dp", Suggestions: nil},
{Command: "help k", Suggestions: nil},
{Command: "ctx p", Suggestions: []string{"re", "rod"}},
{Command: "ctx p", Suggestions: []string{"re", "rod"}},
{Command: "ctx pr", Suggestions: []string{"e", "od"}},
{Command: "context d", Suggestions: []string{"evelop"}},
{Command: "contexts t", Suggestions: []string{"est"}},
{Command: "po ", Suggestions: nil},
{Command: "po x", Suggestions: nil},
{Command: "po k", Suggestions: []string{"ube-system", "ube-public"}},
{Command: "po kube-", Suggestions: []string{"system", "public"}},
}
for _, tt := range tests {
got := suggestSubCommand(tt.Command, namespaceNames, contextNames)
assert.Equal(t, tt.Suggestions, got)
}
}