@@ -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
8567func 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
12993func 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
309289func 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
734718func 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
776762func 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
849839func 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