Skip to content

Commit ad8dbd9

Browse files
committed
Fixed all config* integration test
1 parent 921fa61 commit ad8dbd9

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
// InjectEnvVars change settings based on the environment variables values

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) {
@@ -289,21 +253,37 @@ func TestAddRemoveSetDeleteOnUnexistingKey(t *testing.T) {
289253
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
290254
require.NoError(t, err)
291255

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

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

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

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

309289
func TestAddSingleArgument(t *testing.T) {
@@ -434,6 +414,8 @@ func TestAddOnUnsupportedKey(t *testing.T) {
434414
// Create a config file
435415
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
436416
require.NoError(t, err)
417+
_, _, err = cli.Run("config", "set", "daemon.port", "50051", "--config-file", "arduino-cli.yaml")
418+
require.NoError(t, err)
437419

438420
// Verifies default value
439421
stdout, _, err := cli.Run("config", "dump", "--json", "--config-file", "arduino-cli.yaml")
@@ -542,6 +524,8 @@ func TestRemoveOnUnsupportedKey(t *testing.T) {
542524
// Create a config file
543525
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
544526
require.NoError(t, err)
527+
_, _, err = cli.Run("config", "set", "daemon.port", "50051", "--config-file", "arduino-cli.yaml")
528+
require.NoError(t, err)
545529

546530
// Verifies default value
547531
stdout, _, err := cli.Run("config", "dump", "--json", "--config-file", "arduino-cli.yaml")
@@ -700,7 +684,7 @@ func TestSetStringWithSingleArgument(t *testing.T) {
700684
// Verifies default state
701685
stdout, _, err := cli.Run("config", "dump", "--json", "--config-file", "arduino-cli.yaml")
702686
require.NoError(t, err)
703-
requirejson.Query(t, stdout, ".config | .logging | .level", "\"info\"")
687+
requirejson.NotContains(t, stdout, `{"config":{"logging":{"level"}}}`)
704688

705689
// Changes value
706690
_, _, err = cli.Run("config", "set", "logging.level", "trace", "--config-file", "arduino-cli.yaml")
@@ -723,12 +707,12 @@ func TestSetStringWithMultipleArguments(t *testing.T) {
723707
// Verifies default state
724708
stdout, _, err := cli.Run("config", "dump", "--json", "--config-file", "arduino-cli.yaml")
725709
require.NoError(t, err)
726-
requirejson.Query(t, stdout, ".config | .logging | .level", "\"info\"")
710+
requirejson.NotContains(t, stdout, `{"config":{"logging":{"level"}}}`)
727711

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

734718
func TestSetBoolWithSingleArgument(t *testing.T) {
@@ -742,7 +726,7 @@ func TestSetBoolWithSingleArgument(t *testing.T) {
742726
// Verifies default state
743727
stdout, _, err := cli.Run("config", "dump", "--json", "--config-file", "arduino-cli.yaml")
744728
require.NoError(t, err)
745-
requirejson.Query(t, stdout, ".config | .library | .enable_unsafe_install", "false")
729+
requirejson.NotContains(t, stdout, `{"config": {"library": {"enable_unsafe_install"}}}`)
746730

747731
// Changes value
748732
_, _, err = cli.Run("config", "set", "library.enable_unsafe_install", "true", "--config-file", "arduino-cli.yaml")
@@ -761,6 +745,8 @@ func TestSetBoolWithMultipleArguments(t *testing.T) {
761745
// Create a config file
762746
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
763747
require.NoError(t, err)
748+
_, _, err = cli.Run("config", "set", "library.enable_unsafe_install", "false", "--config-file", "arduino-cli.yaml")
749+
require.NoError(t, err)
764750

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

776762
func TestDelete(t *testing.T) {
@@ -780,6 +766,8 @@ func TestDelete(t *testing.T) {
780766
// Create a config file
781767
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
782768
require.NoError(t, err)
769+
_, _, err = cli.Run("config", "set", "library.enable_unsafe_install", "false", "--config-file", "arduino-cli.yaml")
770+
require.NoError(t, err)
783771

784772
// Verifies default state
785773
stdout, _, err := cli.Run("config", "dump", "--json", "--config-file", "arduino-cli.yaml")
@@ -824,6 +812,8 @@ func TestGet(t *testing.T) {
824812
// Create a config file
825813
_, _, err := cli.Run("config", "init", "--dest-dir", ".")
826814
require.NoError(t, err)
815+
_, _, err = cli.Run("config", "set", "daemon.port", "50051", "--config-file", "arduino-cli.yaml")
816+
require.NoError(t, err)
827817

828818
// Verifies default state
829819
stdout, _, err := cli.Run("config", "dump", "--json", "--config-file", "arduino-cli.yaml")
@@ -843,17 +833,18 @@ func TestGet(t *testing.T) {
843833
// Get undefined key
844834
_, stderr, err := cli.Run("config", "get", "foo", "--json", "--config-file", "arduino-cli.yaml")
845835
require.Error(t, err)
846-
requirejson.Contains(t, stderr, `{"error":"Cannot get the configuration key foo: key not found in settings"}`)
836+
requirejson.Contains(t, stderr, `{"error":"Cannot get the configuration key foo: key foo not found"}`)
847837
}
848838

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

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

858849
// No flag nor env specified.
859850
stdout, _, err := cli.Run("config", "dump", "--json")
@@ -863,16 +854,16 @@ func TestInitializationOrderOfConfigThroughFlagAndEnv(t *testing.T) {
863854
// Flag specified
864855
stdout, _, err = cli.Run("config", "dump", "--config-file", cliConfig.String(), "--json")
865856
require.NoError(t, err)
866-
requirejson.Contains(t, stdout, `{"config":{ "cli-test": "test" }}`)
857+
requirejson.Contains(t, stdout, `{"config":{ "locale": "test" }}`)
867858

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

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

0 commit comments

Comments
 (0)