Merge "Fix flag loading order"

This commit is contained in:
Zuul 2020-01-16 15:55:22 +00:00 committed by Gerrit Code Review
commit e2297e429d
2 changed files with 40 additions and 2 deletions

View File

@ -38,14 +38,15 @@ func NewRootCmd(out io.Writer) (*cobra.Command, *environment.AirshipCTLSettings,
SilenceUsage: true,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
log.Init(settings.Debug, cmd.OutOrStderr())
// Load or Initialize airship Config
settings.InitConfig()
},
}
rootCmd.SetOutput(out)
rootCmd.AddCommand(NewVersionCommand())
settings.InitFlags(rootCmd)
// Load or Initialize airship Config
settings.InitConfig()
return rootCmd, settings, nil
}

View File

@ -1,9 +1,11 @@
package cmd_test
import (
"bytes"
"testing"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"opendev.org/airship/airshipctl/cmd"
@ -36,6 +38,41 @@ func TestRoot(t *testing.T) {
}
}
func TestFlagLoading(t *testing.T) {
tests := []struct {
name string
args []string
expected string
}{
{
name: "default, no flags",
args: []string{},
expected: "$HOME/.airship/config",
},
{
name: "alternate airshipconfig",
args: []string{"--airshipconf", "/custom/path/to/airshipconfig"},
expected: "/custom/path/to/airshipconfig",
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(subTest *testing.T) {
// We don't care about the output of this test, so toss
// it into a thowaway &bytes.buffer{}
rootCmd, settings, err := cmd.NewRootCmd(&bytes.Buffer{})
require.NoError(t, err)
rootCmd.SetArgs(tt.args)
err = rootCmd.Execute()
require.NoError(t, err)
assert.Equal(t, settings.AirshipConfigPath(), tt.expected)
})
}
}
func getVanillaRootCmd(t *testing.T) *cobra.Command {
t.Helper()
rootCmd, _, err := cmd.NewRootCmd(nil)