client: catch and return unhandled errors in InitConfig
(#540)
Catches and returns unhandled errors after stat-ing for the config file, which is currently assuming that on non-existent error returned. Fixes #539
This commit is contained in:
parent
bf415467f9
commit
b0091d4355
@ -23,7 +23,13 @@ func InitConfig(cmd *cobra.Command) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configFile := path.Join(home, "config", "config.toml")
|
configFile := path.Join(home, "config", "config.toml")
|
||||||
if _, err := os.Stat(configFile); err == nil {
|
_, err = os.Stat(configFile)
|
||||||
|
if err != nil && !os.IsNotExist(err) {
|
||||||
|
// Immediately return if the error isn't related to the file not existing.
|
||||||
|
// See issue https://github.com/tharsis/ethermint/issues/539
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
viper.SetConfigFile(configFile)
|
viper.SetConfigFile(configFile)
|
||||||
|
|
||||||
if err := viper.ReadInConfig(); err != nil {
|
if err := viper.ReadInConfig(); err != nil {
|
||||||
|
27
client/config_test.go
Normal file
27
client/config_test.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package client
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/cosmos/cosmos-sdk/client/flags"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestInitConfigNonNotExistError(t *testing.T) {
|
||||||
|
tempDir := t.TempDir()
|
||||||
|
subDir := filepath.Join(tempDir, "nonPerms")
|
||||||
|
if err := os.Mkdir(subDir, 0600); err != nil {
|
||||||
|
t.Fatalf("Failed to create sub directory: %v", err)
|
||||||
|
}
|
||||||
|
cmd := &cobra.Command{}
|
||||||
|
cmd.PersistentFlags().String(flags.FlagHome, "", "")
|
||||||
|
if err := cmd.PersistentFlags().Set(flags.FlagHome, subDir); err != nil {
|
||||||
|
t.Fatalf("Could not set home flag [%T] %v", err, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := InitConfig(cmd); !os.IsPermission(err) {
|
||||||
|
t.Fatalf("Failed to catch permissions error, got: [%T] %v", err, err)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user