summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-04-11 14:48:25 +0200
committerMartin Polden <mpolden@mpolden.no>2022-04-11 14:48:25 +0200
commitc45716051f96a1617957dc2a43ad7525dd966471 (patch)
tree20c1b5146ee2c80814df1bf8f19751fc38d5b034
parent417ac134b9ea21772bb4986779eedbd64ea5f8a5 (diff)
Check that option is valid
-rw-r--r--client/go/cmd/config.go15
-rw-r--r--client/go/cmd/config_test.go29
2 files changed, 33 insertions, 11 deletions
diff --git a/client/go/cmd/config.go b/client/go/cmd/config.go
index 7b198ff82f8..33d63aac79f 100644
--- a/client/go/cmd/config.go
+++ b/client/go/cmd/config.go
@@ -185,7 +185,7 @@ $ vespa config get --local
config.printOption(option)
}
} else {
- config.printOption(args[0])
+ return config.printOption(args[0])
}
return nil
},
@@ -536,7 +536,17 @@ func (c *Config) set(option, value string) error {
return fmt.Errorf("invalid option or value: %s = %s", option, value)
}
-func (c *Config) printOption(option string) {
+func (c *Config) checkOption(option string) error {
+ if _, ok := c.flags[option]; !ok {
+ return fmt.Errorf("invalid option: %s", option)
+ }
+ return nil
+}
+
+func (c *Config) printOption(option string) error {
+ if err := c.checkOption(option); err != nil {
+ return err
+ }
value, ok := c.get(option)
if !ok {
faintColor := color.New(color.FgWhite, color.Faint)
@@ -545,6 +555,7 @@ func (c *Config) printOption(option string) {
value = color.CyanString(value)
}
log.Printf("%s = %s", option, value)
+ return nil
}
func vespaCliHome(env map[string]string) (string, error) {
diff --git a/client/go/cmd/config_test.go b/client/go/cmd/config_test.go
index 673d90506f8..741e23a5c5a 100644
--- a/client/go/cmd/config_test.go
+++ b/client/go/cmd/config_test.go
@@ -15,8 +15,10 @@ import (
func TestConfig(t *testing.T) {
configHome := t.TempDir()
assertConfigCommandErr(t, configHome, "Error: invalid option or value: foo = bar\n", "config", "set", "foo", "bar")
- assertConfigCommand(t, configHome, "foo = <unset>\n", "config", "get", "foo")
- assertConfigCommand(t, configHome, "target = local\n", "config", "get", "target")
+ assertConfigCommandErr(t, configHome, "Error: invalid option: foo\n", "config", "get", "foo")
+
+ // target
+ assertConfigCommand(t, configHome, "target = local\n", "config", "get", "target") // default value
assertConfigCommand(t, configHome, "", "config", "set", "target", "hosted")
assertConfigCommand(t, configHome, "target = hosted\n", "config", "get", "target")
assertConfigCommand(t, configHome, "", "config", "set", "target", "cloud")
@@ -25,25 +27,34 @@ func TestConfig(t *testing.T) {
assertConfigCommand(t, configHome, "", "config", "set", "target", "https://127.0.0.1")
assertConfigCommand(t, configHome, "target = https://127.0.0.1\n", "config", "get", "target")
+ // application
assertConfigCommandErr(t, configHome, "Error: invalid application: \"foo\"\n", "config", "set", "application", "foo")
assertConfigCommand(t, configHome, "application = <unset>\n", "config", "get", "application")
assertConfigCommand(t, configHome, "", "config", "set", "application", "t1.a1.i1")
assertConfigCommand(t, configHome, "application = t1.a1.i1\n", "config", "get", "application")
+ assertConfigCommand(t, configHome, "", "config", "set", "application", "t1.a1")
+ assertConfigCommand(t, configHome, "application = t1.a1.default\n", "config", "get", "application")
- assertConfigCommand(t, configHome, "", "config", "set", "wait", "60")
+ // instance
+ assertConfigCommand(t, configHome, "instance = <unset>\n", "config", "get", "instance")
+ assertConfigCommand(t, configHome, "", "config", "set", "instance", "i2")
+ assertConfigCommand(t, configHome, "instance = i2\n", "config", "get", "instance")
+
+ // wait
assertConfigCommandErr(t, configHome, "Error: wait option must be an integer >= 0, got \"foo\"\n", "config", "set", "wait", "foo")
+ assertConfigCommand(t, configHome, "", "config", "set", "wait", "60")
assertConfigCommand(t, configHome, "wait = 60\n", "config", "get", "wait")
assertConfigCommand(t, configHome, "wait = 30\n", "config", "get", "--wait", "30", "wait") // flag overrides global config
+ // color
+ assertConfigCommandErr(t, configHome, "Error: invalid option or value: color = foo\n", "config", "set", "color", "foo")
+ assertConfigCommand(t, configHome, "", "config", "set", "color", "never")
+ assertConfigCommand(t, configHome, "color = never\n", "config", "get", "color")
+
+ // quiet
assertConfigCommand(t, configHome, "", "config", "set", "quiet", "true")
assertConfigCommand(t, configHome, "", "config", "set", "quiet", "false")
- assertConfigCommand(t, configHome, "", "config", "set", "instance", "i2")
- assertConfigCommand(t, configHome, "instance = i2\n", "config", "get", "instance")
-
- assertConfigCommand(t, configHome, "", "config", "set", "application", "t1.a1")
- assertConfigCommand(t, configHome, "application = t1.a1.default\n", "config", "get", "application")
-
// Write empty value, which should be ignored. This is for compatibility with older config formats
configFile := filepath.Join(configHome, "config.yaml")
data, err := os.ReadFile(configFile)