Skip to content

Commit cf642f4

Browse files
committed
Fixed all config* integration test
1 parent 2a26a8e commit cf642f4

File tree

2 files changed

+54
-60
lines changed

2 files changed

+54
-60
lines changed

Diff for: internal/cli/configuration/defaults.go

+3
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ func SetDefaults(settings *Settings) {
6868
// network settings
6969
setKeyTypeSchema("network.proxy", "")
7070
setKeyTypeSchema("network.user_agent_ext", "")
71+
72+
// locale
73+
setDefaultValueAndKeyTypeSchema("locale", "en")
7174
}
7275

7376
// BindEnvVars binds environment variables to the settings

Diff for: internal/integrationtest/config/config_test.go

+51-60
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,6 @@ func TestInitWithExistingCustomConfig(t *testing.T) {
5050
err = yaml.Unmarshal(configFile, config)
5151
require.NoError(t, err)
5252
require.Equal(t, config["board_manager"]["additional_urls"].([]interface{})[0].(string), "https://example.com")
53-
require.Equal(t, config["daemon"]["port"].(string), "50051")
54-
require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String())
55-
require.Equal(t, config["directories"]["downloads"].(string), cli.DownloadDir().String())
56-
require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String())
57-
require.Empty(t, config["logging"]["file"])
58-
require.Equal(t, config["logging"]["format"].(string), "text")
59-
require.Equal(t, config["logging"]["level"].(string), "info")
60-
require.Equal(t, config["metrics"]["addr"].(string), ":9090")
61-
require.True(t, config["metrics"]["enabled"].(bool))
6253

6354
configFilePath := cli.WorkingDir().Join("config", "test", "config.yaml")
6455
require.NoFileExists(t, configFilePath.String())
@@ -71,15 +62,6 @@ func TestInitWithExistingCustomConfig(t *testing.T) {
7162
err = yaml.Unmarshal(configFile, config)
7263
require.NoError(t, err)
7364
require.Empty(t, config["board_manager"]["additional_urls"])
74-
require.Equal(t, config["daemon"]["port"].(string), "50051")
75-
require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String())
76-
require.Equal(t, config["directories"]["downloads"].(string), cli.DownloadDir().String())
77-
require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String())
78-
require.Empty(t, config["logging"]["file"])
79-
require.Equal(t, config["logging"]["format"].(string), "text")
80-
require.Equal(t, config["logging"]["level"].(string), "info")
81-
require.Equal(t, config["metrics"]["addr"].(string), ":9090")
82-
require.True(t, config["metrics"]["enabled"].(bool))
8365
}
8466

8567
func TestInitOverwriteExistingCustomFile(t *testing.T) {
@@ -96,15 +78,6 @@ func TestInitOverwriteExistingCustomFile(t *testing.T) {
9678
err = yaml.Unmarshal(configFile, config)
9779
require.NoError(t, err)
9880
require.Equal(t, config["board_manager"]["additional_urls"].([]interface{})[0].(string), "https://example.com")
99-
require.Equal(t, config["daemon"]["port"].(string), "50051")
100-
require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String())
101-
require.Equal(t, config["directories"]["downloads"].(string), cli.DownloadDir().String())
102-
require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String())
103-
require.Empty(t, config["logging"]["file"])
104-
require.Equal(t, config["logging"]["format"].(string), "text")
105-
require.Equal(t, config["logging"]["level"].(string), "info")
106-
require.Equal(t, config["metrics"]["addr"].(string), ":9090")
107-
require.True(t, config["metrics"]["enabled"].(bool))
10881

10982
stdout, _, err = cli.Run("config", "init", "--overwrite")
11083
require.NoError(t, err)
@@ -115,15 +88,6 @@ func TestInitOverwriteExistingCustomFile(t *testing.T) {
11588
err = yaml.Unmarshal(configFile, config)
11689
require.NoError(t, err)
11790
require.Empty(t, config["board_manager"]["additional_urls"])
118-
require.Equal(t, config["daemon"]["port"].(string), "50051")
119-
require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String())
120-
require.Equal(t, config["directories"]["downloads"].(string), cli.DownloadDir().String())
121-
require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String())
122-
require.Empty(t, config["logging"]["file"])
123-
require.Equal(t, config["logging"]["format"].(string), "text")
124-
require.Equal(t, config["logging"]["level"].(string), "info")
125-
require.Equal(t, config["metrics"]["addr"].(string), ":9090")
126-
require.True(t, config["metrics"]["enabled"].(bool))
12791
}
12892

12993
func TestInitDestAbsolutePath(t *testing.T) {
@@ -290,21 +254,37 @@ func TestAddRemoveSetDeleteOnUnexistingKey(t *testing.T) {
290254
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
291255
require.NoError(t, err)
292256

293-
_, stderr, err := cli.Run("config", "add", "some.key", "some_value", "--config-file", "arduino-cli.yaml")
294-
require.Error(t, err)
295-
require.Contains(t, string(stderr), "Settings key doesn't exist")
257+
j, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
258+
require.NoError(t, err)
259+
requirejson.Contains(t, j, `{"config":{ "board_manager": {"additional_urls":[]} } }`)
296260

297-
_, stderr, err = cli.Run("config", "remove", "some.key", "some_value", "--config-file", "arduino-cli.yaml")
298-
require.Error(t, err)
299-
require.Contains(t, string(stderr), "Settings key doesn't exist")
261+
// Delete array key
262+
_, _, err = cli.Run("config", "delete", "board_manager.additional_urls", "--config-file", "arduino-cli.yaml")
263+
require.NoError(t, err)
264+
j, _, err = cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
265+
require.NoError(t, err)
266+
requirejson.NotContains(t, j, `{"config":{ "board_manager": {"additional_urls":[]} } }`)
300267

301-
_, stderr, err = cli.Run("config", "set", "some.key", "some_value", "--config-file", "arduino-cli.yaml")
302-
require.Error(t, err)
303-
require.Contains(t, string(stderr), "Settings key doesn't exist")
268+
// Add to non-existing array key
269+
_, _, err = cli.Run("config", "add", "board_manager.additional_urls", "some_value", "--config-file", "arduino-cli.yaml")
270+
require.NoError(t, err)
271+
j, _, err = cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
272+
require.NoError(t, err)
273+
requirejson.Contains(t, j, `{"config":{ "board_manager": {"additional_urls":["some_value"]} } }`)
304274

305-
_, stderr, err = cli.Run("config", "delete", "some.key", "--config-file", "arduino-cli.yaml")
306-
require.Error(t, err)
307-
require.Contains(t, string(stderr), "Cannot delete the key some.key: key not found in settings\n")
275+
// Remove from non-existing array key
276+
_, _, err = cli.Run("config", "remove", "board_manager.additional_urls", "some_value", "--config-file", "arduino-cli.yaml")
277+
require.NoError(t, err)
278+
j, _, err = cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
279+
require.NoError(t, err)
280+
requirejson.NotContains(t, j, `{"config":{ "board_manager": {"additional_urls":["some_value"]} } }`)
281+
282+
// Set on non-existing key
283+
_, _, err = cli.Run("config", "set", "board_manager.additional_urls", "some_value", "other_value", "--config-file", "arduino-cli.yaml")
284+
require.NoError(t, err)
285+
j, _, err = cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
286+
require.NoError(t, err)
287+
requirejson.Contains(t, j, `{"config":{ "board_manager": {"additional_urls":["some_value","other_value"]} } }`)
308288
}
309289

310290
func TestAddSingleArgument(t *testing.T) {
@@ -435,6 +415,8 @@ func TestAddOnUnsupportedKey(t *testing.T) {
435415
// Create a config file
436416
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
437417
require.NoError(t, err)
418+
_, _, err = cli.Run("config", "set", "daemon.port", "50051", "--config-file", "arduino-cli.yaml")
419+
require.NoError(t, err)
438420

439421
// Verifies default value
440422
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
@@ -543,6 +525,8 @@ func TestRemoveOnUnsupportedKey(t *testing.T) {
543525
// Create a config file
544526
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
545527
require.NoError(t, err)
528+
_, _, err = cli.Run("config", "set", "daemon.port", "50051", "--config-file", "arduino-cli.yaml")
529+
require.NoError(t, err)
546530

547531
// Verifies default value
548532
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
@@ -701,7 +685,7 @@ func TestSetStringWithSingleArgument(t *testing.T) {
701685
// Verifies default state
702686
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
703687
require.NoError(t, err)
704-
requirejson.Query(t, stdout, ".config | .logging | .level", "\"info\"")
688+
requirejson.NotContains(t, stdout, `{"config":{"logging":{"level"}}}`)
705689

706690
// Changes value
707691
_, _, err = cli.Run("config", "set", "logging.level", "trace", "--config-file", "arduino-cli.yaml")
@@ -724,12 +708,12 @@ func TestSetStringWithMultipleArguments(t *testing.T) {
724708
// Verifies default state
725709
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
726710
require.NoError(t, err)
727-
requirejson.Query(t, stdout, ".config | .logging | .level", "\"info\"")
711+
requirejson.NotContains(t, stdout, `{"config":{"logging":{"level"}}}`)
728712

729713
// Tries to change value
730714
_, stderr, err := cli.Run("config", "set", "logging.level", "trace", "debug")
731715
require.Error(t, err)
732-
require.Contains(t, string(stderr), "Can't set multiple values in key logging.level")
716+
require.Contains(t, string(stderr), "Error setting value: invalid type for key 'logging.level': invalid conversion, got array but want string")
733717
}
734718

735719
func TestSetBoolWithSingleArgument(t *testing.T) {
@@ -743,7 +727,7 @@ func TestSetBoolWithSingleArgument(t *testing.T) {
743727
// Verifies default state
744728
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
745729
require.NoError(t, err)
746-
requirejson.Query(t, stdout, ".config | .library | .enable_unsafe_install", "false")
730+
requirejson.NotContains(t, stdout, `{"config": {"library": {"enable_unsafe_install"}}}`)
747731

748732
// Changes value
749733
_, _, err = cli.Run("config", "set", "library.enable_unsafe_install", "true", "--config-file", "arduino-cli.yaml")
@@ -762,6 +746,8 @@ func TestSetBoolWithMultipleArguments(t *testing.T) {
762746
// Create a config file
763747
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
764748
require.NoError(t, err)
749+
_, _, err = cli.Run("config", "set", "library.enable_unsafe_install", "false", "--config-file", "arduino-cli.yaml")
750+
require.NoError(t, err)
765751

766752
// Verifies default state
767753
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
@@ -771,7 +757,7 @@ func TestSetBoolWithMultipleArguments(t *testing.T) {
771757
// Changes value
772758
_, stderr, err := cli.Run("config", "set", "library.enable_unsafe_install", "true", "foo", "--config-file", "arduino-cli.yaml")
773759
require.Error(t, err)
774-
require.Contains(t, string(stderr), "Can't set multiple values in key library.enable_unsafe_install")
760+
require.Contains(t, string(stderr), "Error setting value: invalid type for key 'library.enable_unsafe_install': invalid conversion, got array but want bool")
775761
}
776762

777763
func TestDelete(t *testing.T) {
@@ -781,6 +767,8 @@ func TestDelete(t *testing.T) {
781767
// Create a config file
782768
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
783769
require.NoError(t, err)
770+
_, _, err = cli.Run("config", "set", "library.enable_unsafe_install", "false", "--config-file", "arduino-cli.yaml")
771+
require.NoError(t, err)
784772

785773
// Verifies default state
786774
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
@@ -825,6 +813,8 @@ func TestGet(t *testing.T) {
825813
// Create a config file
826814
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
827815
require.NoError(t, err)
816+
_, _, err = cli.Run("config", "set", "daemon.port", "50051", "--config-file", "arduino-cli.yaml")
817+
require.NoError(t, err)
828818

829819
// Verifies default state
830820
stdout, _, err := cli.Run("config", "dump", "--format", "json", "--config-file", "arduino-cli.yaml")
@@ -844,17 +834,18 @@ func TestGet(t *testing.T) {
844834
// Get undefined key
845835
_, stderr, err := cli.Run("config", "get", "foo", "--format", "json", "--config-file", "arduino-cli.yaml")
846836
require.Error(t, err)
847-
requirejson.Contains(t, stderr, `{"error":"Cannot get the configuration key foo: key not found in settings"}`)
837+
requirejson.Contains(t, stderr, `{"error":"Cannot get the configuration key foo: key foo not found"}`)
848838
}
849839

850840
func TestInitializationOrderOfConfigThroughFlagAndEnv(t *testing.T) {
851841
env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t)
852842
defer env.CleanUp()
853843

854844
tmp := t.TempDir()
855-
cliConfig, envConfig := paths.New(filepath.Join(tmp, "cli.yaml")), paths.New(filepath.Join(tmp, "env.yaml"))
856-
cliConfig.WriteFile([]byte(`cli-test: "test"`))
857-
envConfig.WriteFile([]byte(`env-test: "test"`))
845+
cliConfig := paths.New(filepath.Join(tmp, "cli.yaml"))
846+
cliConfig.WriteFile([]byte(`locale: "test"`))
847+
envConfig := paths.New(filepath.Join(tmp, "env.yaml"))
848+
envConfig.WriteFile([]byte(`locale: "test2"`))
858849

859850
// No flag nor env specified.
860851
stdout, _, err := cli.Run("config", "dump", "--format", "json")
@@ -864,16 +855,16 @@ func TestInitializationOrderOfConfigThroughFlagAndEnv(t *testing.T) {
864855
// Flag specified
865856
stdout, _, err = cli.Run("config", "dump", "--config-file", cliConfig.String(), "--format", "json")
866857
require.NoError(t, err)
867-
requirejson.Contains(t, stdout, `{"config":{ "cli-test": "test" }}`)
858+
requirejson.Contains(t, stdout, `{"config":{ "locale": "test" }}`)
868859

869860
// Env specified
870861
customEnv := map[string]string{"ARDUINO_CONFIG_FILE": envConfig.String()}
871862
stdout, _, err = cli.RunWithCustomEnv(customEnv, "config", "dump", "--format", "json")
872863
require.NoError(t, err)
873-
requirejson.Contains(t, stdout, `{"config":{ "env-test": "test" }}`)
864+
requirejson.Contains(t, stdout, `{"config":{ "locale": "test2" }}`)
874865

875866
// Flag and env specified, flag takes precedence
876867
stdout, _, err = cli.RunWithCustomEnv(customEnv, "config", "dump", "--config-file", cliConfig.String(), "--format", "json")
877868
require.NoError(t, err)
878-
requirejson.Contains(t, stdout, `{"config":{ "cli-test": "test" }}`)
869+
requirejson.Contains(t, stdout, `{"config":{ "locale": "test" }}`)
879870
}

0 commit comments

Comments
 (0)