From 2bb3aef76ed695118d0f483f2c9e4d756f73866d Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 11:48:10 +0200 Subject: [PATCH 01/26] Migrate TestInit from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 33 +++++++++++++++++++ test/test_config.py | 7 ---- 2 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 internal/integrationtest/config/config_test.go diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go new file mode 100644 index 00000000000..1a49e4c61a5 --- /dev/null +++ b/internal/integrationtest/config/config_test.go @@ -0,0 +1,33 @@ +// This file is part of arduino-cli. +// +// Copyright 2022 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package config_test + +import ( + "testing" + + "github.com/arduino/arduino-cli/internal/integrationtest" + "github.com/stretchr/testify/require" +) + +func TestInit(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + stdout, stderr, err := cli.Run("config", "init") + require.Empty(t, stderr) + require.NoError(t, err) + require.Contains(t, string(stdout), cli.DataDir().String()) +} diff --git a/test/test_config.py b/test/test_config.py index fe974775207..ed566be7ec6 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,13 +17,6 @@ import yaml -def test_init(run_command, data_dir, working_dir): - result = run_command(["config", "init"]) - assert "" == result.stderr - assert result.ok - assert data_dir in result.stdout - - def test_init_with_existing_custom_config(run_command, data_dir, working_dir, downloads_dir): result = run_command(["config", "init", "--additional-urls", "https://example.com"]) assert result.ok From b8b1e4e8506e00a18f6c9cb9fdaa055504160cb1 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 12:43:22 +0200 Subject: [PATCH 02/26] Migrate TestInitWithExistingCustomConfig from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 47 +++++++++++++++++++ test/test_config.py | 40 ---------------- 2 files changed, 47 insertions(+), 40 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 1a49e4c61a5..25a0cb7d740 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -20,6 +20,7 @@ import ( "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/stretchr/testify/require" + "gopkg.in/yaml.v2" ) func TestInit(t *testing.T) { @@ -31,3 +32,49 @@ func TestInit(t *testing.T) { require.NoError(t, err) require.Contains(t, string(stdout), cli.DataDir().String()) } + +func TestInitWithExistingCustomConfig(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + stdout, _, err := cli.Run("config", "init", "--additional-urls", "https://example.com") + require.NoError(t, err) + require.Contains(t, string(stdout), cli.DataDir().String()) + + configFile, err := cli.DataDir().Join("arduino-cli.yaml").ReadFile() + require.NoError(t, err) + config := make(map[string]map[string]interface{}) + err = yaml.Unmarshal(configFile, config) + require.NoError(t, err) + require.Equal(t, config["board_manager"]["additional_urls"].([]interface{})[0].(string), "https://example.com") + require.Equal(t, config["daemon"]["port"].(string), "50051") + require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String()) + require.Equal(t, config["directories"]["downloads"].(string), env.SharedDownloadsDir().String()) + require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String()) + require.Empty(t, config["logging"]["file"]) + require.Equal(t, config["logging"]["format"].(string), "text") + require.Equal(t, config["logging"]["level"].(string), "info") + require.Equal(t, config["metrics"]["addr"].(string), ":9090") + require.True(t, config["metrics"]["enabled"].(bool)) + + configFilePath := cli.WorkingDir().Join("config", "test", "config.yaml") + require.NoFileExists(t, configFilePath.String()) + stdout, _, err = cli.Run("config", "init", "--dest-file", configFilePath.String()) + require.NoError(t, err) + require.Contains(t, string(stdout), configFilePath.String()) + + configFile, err = configFilePath.ReadFile() + require.NoError(t, err) + err = yaml.Unmarshal(configFile, config) + require.NoError(t, err) + require.Empty(t, config["board_manager"]["additional_urls"]) + require.Equal(t, config["daemon"]["port"].(string), "50051") + require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String()) + require.Equal(t, config["directories"]["downloads"].(string), env.SharedDownloadsDir().String()) + require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String()) + require.Empty(t, config["logging"]["file"]) + require.Equal(t, config["logging"]["format"].(string), "text") + require.Equal(t, config["logging"]["level"].(string), "info") + require.Equal(t, config["metrics"]["addr"].(string), ":9090") + require.True(t, config["metrics"]["enabled"].(bool)) +} diff --git a/test/test_config.py b/test/test_config.py index ed566be7ec6..4e07d98088b 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,46 +17,6 @@ import yaml -def test_init_with_existing_custom_config(run_command, data_dir, working_dir, downloads_dir): - result = run_command(["config", "init", "--additional-urls", "https://example.com"]) - assert result.ok - assert data_dir in result.stdout - - config_file = open(Path(data_dir) / "arduino-cli.yaml", "r") - configs = yaml.load(config_file.read(), Loader=yaml.FullLoader) - config_file.close() - assert ["https://example.com"] == configs["board_manager"]["additional_urls"] - assert "50051" == configs["daemon"]["port"] - assert data_dir == configs["directories"]["data"] - assert downloads_dir == configs["directories"]["downloads"] - assert data_dir == configs["directories"]["user"] - assert "" == configs["logging"]["file"] - assert "text" == configs["logging"]["format"] - assert "info" == configs["logging"]["level"] - assert ":9090" == configs["metrics"]["addr"] - assert configs["metrics"]["enabled"] - - config_file_path = Path(working_dir) / "config" / "test" / "config.yaml" - assert not config_file_path.exists() - result = run_command(["config", "init", "--dest-file", config_file_path]) - assert result.ok - assert str(config_file_path) in result.stdout - - config_file = open(config_file_path, "r") - configs = yaml.load(config_file.read(), Loader=yaml.FullLoader) - config_file.close() - assert [] == configs["board_manager"]["additional_urls"] - assert "50051" == configs["daemon"]["port"] - assert data_dir == configs["directories"]["data"] - assert downloads_dir == configs["directories"]["downloads"] - assert data_dir == configs["directories"]["user"] - assert "" == configs["logging"]["file"] - assert "text" == configs["logging"]["format"] - assert "info" == configs["logging"]["level"] - assert ":9090" == configs["metrics"]["addr"] - assert configs["metrics"]["enabled"] - - def test_init_overwrite_existing_custom_file(run_command, data_dir, working_dir, downloads_dir): result = run_command(["config", "init", "--additional-urls", "https://example.com"]) assert result.ok From da9c62226427dd7f8776ea9f072e70f0b58f3f39 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 12:51:33 +0200 Subject: [PATCH 03/26] Migrate TestInitOverwriteExistingCustomFile from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 44 +++++++++++++++++++ test/test_config.py | 38 ---------------- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 25a0cb7d740..98e33bbb445 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -78,3 +78,47 @@ func TestInitWithExistingCustomConfig(t *testing.T) { require.Equal(t, config["metrics"]["addr"].(string), ":9090") require.True(t, config["metrics"]["enabled"].(bool)) } + +func TestInitOverwriteExistingCustomFile(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + stdout, _, err := cli.Run("config", "init", "--additional-urls", "https://example.com") + require.NoError(t, err) + require.Contains(t, string(stdout), cli.DataDir().String()) + + configFile, err := cli.DataDir().Join("arduino-cli.yaml").ReadFile() + require.NoError(t, err) + config := make(map[string]map[string]interface{}) + err = yaml.Unmarshal(configFile, config) + require.NoError(t, err) + require.Equal(t, config["board_manager"]["additional_urls"].([]interface{})[0].(string), "https://example.com") + require.Equal(t, config["daemon"]["port"].(string), "50051") + require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String()) + require.Equal(t, config["directories"]["downloads"].(string), env.SharedDownloadsDir().String()) + require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String()) + require.Empty(t, config["logging"]["file"]) + require.Equal(t, config["logging"]["format"].(string), "text") + require.Equal(t, config["logging"]["level"].(string), "info") + require.Equal(t, config["metrics"]["addr"].(string), ":9090") + require.True(t, config["metrics"]["enabled"].(bool)) + + stdout, _, err = cli.Run("config", "init", "--overwrite") + require.NoError(t, err) + require.Contains(t, string(stdout), cli.DataDir().String()) + + configFile, err = cli.DataDir().Join("arduino-cli.yaml").ReadFile() + require.NoError(t, err) + err = yaml.Unmarshal(configFile, config) + require.NoError(t, err) + require.Empty(t, config["board_manager"]["additional_urls"]) + require.Equal(t, config["daemon"]["port"].(string), "50051") + require.Equal(t, config["directories"]["data"].(string), cli.DataDir().String()) + require.Equal(t, config["directories"]["downloads"].(string), env.SharedDownloadsDir().String()) + require.Equal(t, config["directories"]["user"].(string), cli.SketchbookDir().String()) + require.Empty(t, config["logging"]["file"]) + require.Equal(t, config["logging"]["format"].(string), "text") + require.Equal(t, config["logging"]["level"].(string), "info") + require.Equal(t, config["metrics"]["addr"].(string), ":9090") + require.True(t, config["metrics"]["enabled"].(bool)) +} diff --git a/test/test_config.py b/test/test_config.py index 4e07d98088b..a27f617847f 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,44 +17,6 @@ import yaml -def test_init_overwrite_existing_custom_file(run_command, data_dir, working_dir, downloads_dir): - result = run_command(["config", "init", "--additional-urls", "https://example.com"]) - assert result.ok - assert data_dir in result.stdout - - config_file = open(Path(data_dir) / "arduino-cli.yaml", "r") - configs = yaml.load(config_file.read(), Loader=yaml.FullLoader) - config_file.close() - assert ["https://example.com"] == configs["board_manager"]["additional_urls"] - assert "50051" == configs["daemon"]["port"] - assert data_dir == configs["directories"]["data"] - assert downloads_dir == configs["directories"]["downloads"] - assert data_dir == configs["directories"]["user"] - assert "" == configs["logging"]["file"] - assert "text" == configs["logging"]["format"] - assert "info" == configs["logging"]["level"] - assert ":9090" == configs["metrics"]["addr"] - assert configs["metrics"]["enabled"] - - result = run_command(["config", "init", "--overwrite"]) - assert result.ok - assert data_dir in result.stdout - - config_file = open(Path(data_dir) / "arduino-cli.yaml", "r") - configs = yaml.load(config_file.read(), Loader=yaml.FullLoader) - config_file.close() - assert [] == configs["board_manager"]["additional_urls"] - assert "50051" == configs["daemon"]["port"] - assert data_dir == configs["directories"]["data"] - assert downloads_dir == configs["directories"]["downloads"] - assert data_dir == configs["directories"]["user"] - assert "" == configs["logging"]["file"] - assert "text" == configs["logging"]["format"] - assert "info" == configs["logging"]["level"] - assert ":9090" == configs["metrics"]["addr"] - assert configs["metrics"]["enabled"] - - def test_init_dest_absolute_path(run_command, working_dir): dest = Path(working_dir) / "config" / "test" expected_config_file = dest / "arduino-cli.yaml" From b43576ad56867e0879c1346a7af04a92249c17c5 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 12:56:02 +0200 Subject: [PATCH 04/26] Migrate TestInitDestAbsolutePath from test_config.py to config_test.go --- internal/integrationtest/config/config_test.go | 13 +++++++++++++ test/test_config.py | 10 ---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 98e33bbb445..d68c4bb795b 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -122,3 +122,16 @@ func TestInitOverwriteExistingCustomFile(t *testing.T) { require.Equal(t, config["metrics"]["addr"].(string), ":9090") require.True(t, config["metrics"]["enabled"].(bool)) } + +func TestInitDestAbsolutePath(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + dest := cli.WorkingDir().Join("config", "test") + expectedConfigFile := dest.Join("arduino-cli.yaml") + require.NoFileExists(t, expectedConfigFile.String()) + stdout, _, err := cli.Run("config", "init", "--dest-dir", dest.String()) + require.NoError(t, err) + require.Contains(t, string(stdout), expectedConfigFile.String()) + require.FileExists(t, expectedConfigFile.String()) +} diff --git a/test/test_config.py b/test/test_config.py index a27f617847f..f783ddfe5b8 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,16 +17,6 @@ import yaml -def test_init_dest_absolute_path(run_command, working_dir): - dest = Path(working_dir) / "config" / "test" - expected_config_file = dest / "arduino-cli.yaml" - assert not expected_config_file.exists() - result = run_command(["config", "init", "--dest-dir", dest]) - assert result.ok - assert str(expected_config_file) in result.stdout - assert expected_config_file.exists() - - def test_init_dest_relative_path(run_command, working_dir): dest = Path(working_dir) / "config" / "test" expected_config_file = dest / "arduino-cli.yaml" From 7e61c45afc89935d3a6e0093aa8badd38d38d132 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 14:26:26 +0200 Subject: [PATCH 05/26] Migrate TestInitDestRelativePath from test_config.py to config_test.go --- internal/integrationtest/config/config_test.go | 13 +++++++++++++ test/test_config.py | 10 ---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index d68c4bb795b..471a2308100 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -135,3 +135,16 @@ func TestInitDestAbsolutePath(t *testing.T) { require.Contains(t, string(stdout), expectedConfigFile.String()) require.FileExists(t, expectedConfigFile.String()) } + +func TestInistDestRelativePath(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + dest := cli.WorkingDir().Join("config", "test") + expectedConfigFile := dest.Join("arduino-cli.yaml") + require.NoFileExists(t, expectedConfigFile.String()) + stdout, _, err := cli.Run("config", "init", "--dest-dir", "config/test") + require.NoError(t, err) + require.Contains(t, string(stdout), expectedConfigFile.String()) + require.FileExists(t, expectedConfigFile.String()) +} diff --git a/test/test_config.py b/test/test_config.py index f783ddfe5b8..2dbb1c1d890 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,16 +17,6 @@ import yaml -def test_init_dest_relative_path(run_command, working_dir): - dest = Path(working_dir) / "config" / "test" - expected_config_file = dest / "arduino-cli.yaml" - assert not expected_config_file.exists() - result = run_command(["config", "init", "--dest-dir", "config/test"]) - assert result.ok - assert str(expected_config_file) in result.stdout - assert expected_config_file.exists() - - def test_init_dest_flag_with_overwrite_flag(run_command, working_dir): dest = Path(working_dir) / "config" / "test" From bcb8339d80863df2eedca5743d74c7e4d183c202 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 14:30:55 +0200 Subject: [PATCH 06/26] Migrate TestInitDestFlagWithOverwriteFlag from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 21 +++++++++++++++++++ test/test_config.py | 19 ----------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 471a2308100..1c1679d275e 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -148,3 +148,24 @@ func TestInistDestRelativePath(t *testing.T) { require.Contains(t, string(stdout), expectedConfigFile.String()) require.FileExists(t, expectedConfigFile.String()) } + +func TestInitDestFlagWithOverwriteFlag(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + dest := cli.WorkingDir().Join("config", "test") + expectedConfigFile := dest.Join("arduino-cli.yaml") + require.NoFileExists(t, expectedConfigFile.String()) + + _, _, err := cli.Run("config", "init", "--dest-dir", dest.String()) + require.NoError(t, err) + require.FileExists(t, expectedConfigFile.String()) + + _, stderr, err := cli.Run("config", "init", "--dest-dir", dest.String()) + require.Error(t, err) + require.Contains(t, string(stderr), "Config file already exists, use --overwrite to discard the existing one.") + + stdout, _, err := cli.Run("config", "init", "--dest-dir", dest.String(), "--overwrite") + require.NoError(t, err) + require.Contains(t, string(stdout), expectedConfigFile.String()) +} diff --git a/test/test_config.py b/test/test_config.py index 2dbb1c1d890..3ac01af96c4 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,25 +17,6 @@ import yaml -def test_init_dest_flag_with_overwrite_flag(run_command, working_dir): - dest = Path(working_dir) / "config" / "test" - - expected_config_file = dest / "arduino-cli.yaml" - assert not expected_config_file.exists() - - result = run_command(["config", "init", "--dest-dir", dest]) - assert result.ok - assert expected_config_file.exists() - - result = run_command(["config", "init", "--dest-dir", dest]) - assert result.failed - assert "Config file already exists, use --overwrite to discard the existing one." in result.stderr - - result = run_command(["config", "init", "--dest-dir", dest, "--overwrite"]) - assert result.ok - assert str(expected_config_file) in result.stdout - - def test_init_dest_and_config_file_flags(run_command, working_dir): result = run_command(["config", "init", "--dest-file", "some_other_path", "--dest-dir", "some_path"]) assert result.failed From 1e654205d6e2726019c2eb46f9cdf764c297d93c Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 14:36:29 +0200 Subject: [PATCH 07/26] Migrate TestInitDestAndConfigFileFlags from test_config.py to config_test.go --- internal/integrationtest/config/config_test.go | 9 +++++++++ test/test_config.py | 6 ------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 1c1679d275e..652a10eed49 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -169,3 +169,12 @@ func TestInitDestFlagWithOverwriteFlag(t *testing.T) { require.NoError(t, err) require.Contains(t, string(stdout), expectedConfigFile.String()) } + +func TestInitDestAndConfigFileFlags(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + _, stderr, err := cli.Run("config", "init", "--dest-file", "some_other_path", "--dest-dir", "some_path") + require.Error(t, err) + require.Contains(t, string(stderr), "Can't use --dest-file and --dest-dir flags at the same time.") +} diff --git a/test/test_config.py b/test/test_config.py index 3ac01af96c4..0ae84c48d20 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,12 +17,6 @@ import yaml -def test_init_dest_and_config_file_flags(run_command, working_dir): - result = run_command(["config", "init", "--dest-file", "some_other_path", "--dest-dir", "some_path"]) - assert result.failed - assert "Can't use --dest-file and --dest-dir flags at the same time." in result.stderr - - def test_init_config_file_flag_absolute_path(run_command, working_dir): config_file = Path(working_dir) / "config" / "test" / "config.yaml" assert not config_file.exists() From 12ee89c0479673eb5bc2ccf7e406522ec8b60f22 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 20 Sep 2022 14:39:24 +0200 Subject: [PATCH 08/26] Migrate TestInitConfigFileFlagAbsolutePath from test_config.py to config_test.go --- internal/integrationtest/config/config_test.go | 13 +++++++++++++ test/test_config.py | 9 --------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 652a10eed49..08a5ab4a4de 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -178,3 +178,16 @@ func TestInitDestAndConfigFileFlags(t *testing.T) { require.Error(t, err) require.Contains(t, string(stderr), "Can't use --dest-file and --dest-dir flags at the same time.") } + +func TestInitConfigFileFlagAbsolutePath(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + configFile := cli.WorkingDir().Join("config", "test", "config.yaml") + require.NoFileExists(t, configFile.String()) + + stdout, _, err := cli.Run("config", "init", "--dest-file", configFile.String()) + require.NoError(t, err) + require.Contains(t, string(stdout), configFile.String()) + require.FileExists(t, configFile.String()) +} diff --git a/test/test_config.py b/test/test_config.py index 0ae84c48d20..d0fbbd2d5cd 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,15 +17,6 @@ import yaml -def test_init_config_file_flag_absolute_path(run_command, working_dir): - config_file = Path(working_dir) / "config" / "test" / "config.yaml" - assert not config_file.exists() - result = run_command(["config", "init", "--dest-file", config_file]) - assert result.ok - assert str(config_file) in result.stdout - assert config_file.exists() - - def test_init_config_file_flag_relative_path(run_command, working_dir): config_file = Path(working_dir) / "config.yaml" assert not config_file.exists() From 97aabb1dbda04d844ac572be6fa62a460b6e8963 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 27 Sep 2022 11:45:26 +0200 Subject: [PATCH 09/26] Migrate TestInitConfigFileFlagWithOverwriteFlag from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 20 +++++++++++++++++++ test/test_config.py | 17 ---------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 08a5ab4a4de..f09c7eed78e 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -191,3 +191,23 @@ func TestInitConfigFileFlagAbsolutePath(t *testing.T) { require.Contains(t, string(stdout), configFile.String()) require.FileExists(t, configFile.String()) } + +func TestInitConfigFileFlagWithOverwriteFlag(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + configFile := cli.WorkingDir().Join("config", "test", "config.yaml") + require.NoFileExists(t, configFile.String()) + + _, _, err := cli.Run("config", "init", "--dest-file", configFile.String()) + require.NoError(t, err) + require.FileExists(t, configFile.String()) + + _, stderr, err := cli.Run("config", "init", "--dest-file", configFile.String()) + require.Error(t, err) + require.Contains(t, string(stderr), "Config file already exists, use --overwrite to discard the existing one.") + + stdout, _, err := cli.Run("config", "init", "--dest-file", configFile.String(), "--overwrite") + require.NoError(t, err) + require.Contains(t, string(stdout), configFile.String()) +} diff --git a/test/test_config.py b/test/test_config.py index d0fbbd2d5cd..65d03b88bd7 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -26,23 +26,6 @@ def test_init_config_file_flag_relative_path(run_command, working_dir): assert config_file.exists() -def test_init_config_file_flag_with_overwrite_flag(run_command, working_dir): - config_file = Path(working_dir) / "config" / "test" / "config.yaml" - assert not config_file.exists() - - result = run_command(["config", "init", "--dest-file", config_file]) - assert result.ok - assert config_file.exists() - - result = run_command(["config", "init", "--dest-file", config_file]) - assert result.failed - assert "Config file already exists, use --overwrite to discard the existing one." in result.stderr - - result = run_command(["config", "init", "--dest-file", config_file, "--overwrite"]) - assert result.ok - assert str(config_file) in result.stdout - - def test_dump(run_command, data_dir, working_dir): # Create a config file first config_file = Path(working_dir) / "config" / "test" / "config.yaml" From c955cf0e5008bb445ef244d0df0f2a3d67768adf Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 27 Sep 2022 11:56:02 +0200 Subject: [PATCH 10/26] Migrate TestDump from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 27 +++++++++++++++++++ test/test_config.py | 25 ----------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index f09c7eed78e..5700833c652 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -20,6 +20,7 @@ import ( "github.com/arduino/arduino-cli/internal/integrationtest" "github.com/stretchr/testify/require" + "go.bug.st/testifyjson/requirejson" "gopkg.in/yaml.v2" ) @@ -211,3 +212,29 @@ func TestInitConfigFileFlagWithOverwriteFlag(t *testing.T) { require.NoError(t, err) require.Contains(t, string(stdout), configFile.String()) } + +func TestDump(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file first + configFile := cli.WorkingDir().Join("config", "test", "config.yaml") + require.NoFileExists(t, configFile.String()) + _, _, err := cli.Run("config", "init", "--dest-file", configFile.String()) + require.NoError(t, err) + require.FileExists(t, configFile.String()) + + stdout, _, err := cli.Run("config", "dump", "--config-file", configFile.String(), "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") + + stdout, _, err = cli.Run("config", "init", "--additional-urls", "https://example.com") + require.NoError(t, err) + configFile = cli.DataDir().Join("arduino-cli.yaml") + require.Contains(t, string(stdout), configFile.String()) + require.FileExists(t, configFile.String()) + + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com\"]") +} diff --git a/test/test_config.py b/test/test_config.py index 65d03b88bd7..3f09b2ed27e 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -26,31 +26,6 @@ def test_init_config_file_flag_relative_path(run_command, working_dir): assert config_file.exists() -def test_dump(run_command, data_dir, working_dir): - # Create a config file first - config_file = Path(working_dir) / "config" / "test" / "config.yaml" - assert not config_file.exists() - result = run_command(["config", "init", "--dest-file", config_file]) - assert result.ok - assert config_file.exists() - - result = run_command(["config", "dump", "--config-file", config_file, "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [] == settings_json["board_manager"]["additional_urls"] - - result = run_command(["config", "init", "--additional-urls", "https://example.com"]) - assert result.ok - config_file = Path(data_dir) / "arduino-cli.yaml" - assert str(config_file) in result.stdout - assert config_file.exists() - - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert ["https://example.com"] == settings_json["board_manager"]["additional_urls"] - - def test_dump_with_config_file_flag(run_command, working_dir): # Create a config file first config_file = Path(working_dir) / "config" / "test" / "config.yaml" From d5e9c57883d1702881d470e4c4a30ad3fc8458d0 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Tue, 27 Sep 2022 12:02:02 +0200 Subject: [PATCH 11/26] Migrate TestDumpWithConfigFileFlag from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 28 ++++++++++++++++++ test/test_config.py | 29 ------------------- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 5700833c652..c2e2ea75f19 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -238,3 +238,31 @@ func TestDump(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com\"]") } + +func TestDumpWithConfigFileFlag(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file first + configFile := cli.WorkingDir().Join("config", "test", "config.yaml") + require.NoFileExists(t, configFile.String()) + _, _, err := cli.Run("config", "init", "--dest-file", configFile.String(), "--additional-urls=https://example.com") + require.NoError(t, err) + require.FileExists(t, configFile.String()) + + stdout, _, err := cli.Run("config", "dump", "--config-file", configFile.String(), "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com\"]") + + stdout, _, err = cli.Run( + "config", + "dump", + "--config-file", + configFile.String(), + "--additional-urls=https://another-url.com", + "--format", + "json", + ) + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://another-url.com\"]") +} diff --git a/test/test_config.py b/test/test_config.py index 3f09b2ed27e..81b522cc426 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -26,35 +26,6 @@ def test_init_config_file_flag_relative_path(run_command, working_dir): assert config_file.exists() -def test_dump_with_config_file_flag(run_command, working_dir): - # Create a config file first - config_file = Path(working_dir) / "config" / "test" / "config.yaml" - assert not config_file.exists() - result = run_command(["config", "init", "--dest-file", config_file, "--additional-urls=https://example.com"]) - assert result.ok - assert config_file.exists() - - result = run_command(["config", "dump", "--config-file", config_file, "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert ["https://example.com"] == settings_json["board_manager"]["additional_urls"] - - result = run_command( - [ - "config", - "dump", - "--config-file", - config_file, - "--additional-urls=https://another-url.com", - "--format", - "json", - ] - ) - assert result.ok - settings_json = json.loads(result.stdout) - assert ["https://another-url.com"] == settings_json["board_manager"]["additional_urls"] - - def test_add_remove_set_delete_on_unexisting_key(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 305cbb61058d33147feb5e078d84cd1c8ebcc694 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 11:18:08 +0200 Subject: [PATCH 12/26] Migrate TestInitConfigFileFlagRelativePath from test_config.py to config_test.go --- internal/integrationtest/config/config_test.go | 13 +++++++++++++ test/test_config.py | 9 --------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index c2e2ea75f19..d035804cfac 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -193,6 +193,19 @@ func TestInitConfigFileFlagAbsolutePath(t *testing.T) { require.FileExists(t, configFile.String()) } +func TestInitConfigFileFlagRelativePath(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + configFile := cli.WorkingDir().Join("config.yaml") + require.NoFileExists(t, configFile.String()) + + stdout, _, err := cli.Run("config", "init", "--dest-file", "config.yaml") + require.NoError(t, err) + require.Contains(t, string(stdout), configFile.String()) + require.FileExists(t, configFile.String()) +} + func TestInitConfigFileFlagWithOverwriteFlag(t *testing.T) { env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) defer env.CleanUp() diff --git a/test/test_config.py b/test/test_config.py index 81b522cc426..42a179ae106 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,15 +17,6 @@ import yaml -def test_init_config_file_flag_relative_path(run_command, working_dir): - config_file = Path(working_dir) / "config.yaml" - assert not config_file.exists() - result = run_command(["config", "init", "--dest-file", "config.yaml"]) - assert result.ok - assert str(config_file) in result.stdout - assert config_file.exists() - - def test_add_remove_set_delete_on_unexisting_key(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 5325b145f1943c014e913331a751087fc7957561 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 11:53:17 +0200 Subject: [PATCH 13/26] Migrate TestAddRemoveSetDeleteOnUnexistingKey from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 25 +++++++++++++++++++ test/test_config.py | 21 ---------------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index d035804cfac..52464f5be6b 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -279,3 +279,28 @@ func TestDumpWithConfigFileFlag(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://another-url.com\"]") } + +func TestAddRemoveSetDeleteOnUnexistingKey(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + _, stderr, err := cli.Run("config", "add", "some.key", "some_value") + require.Error(t, err) + require.Contains(t, string(stderr), "Settings key doesn't exist") + + _, stderr, err = cli.Run("config", "remove", "some.key", "some_value") + require.Error(t, err) + require.Contains(t, string(stderr), "Settings key doesn't exist") + + _, stderr, err = cli.Run("config", "set", "some.key", "some_value") + require.Error(t, err) + require.Contains(t, string(stderr), "Settings key doesn't exist") + + _, stderr, err = cli.Run("config", "delete", "some.key") + require.Error(t, err) + require.Contains(t, string(stderr), "Settings key doesn't exist") +} diff --git a/test/test_config.py b/test/test_config.py index 42a179ae106..8292266e637 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,27 +17,6 @@ import yaml -def test_add_remove_set_delete_on_unexisting_key(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - res = run_command(["config", "add", "some.key", "some_value"]) - assert res.failed - assert "Settings key doesn't exist" in res.stderr - - res = run_command(["config", "remove", "some.key", "some_value"]) - assert res.failed - assert "Settings key doesn't exist" in res.stderr - - res = run_command(["config", "set", "some.key", "some_value"]) - assert res.failed - assert "Settings key doesn't exist" in res.stderr - - res = run_command(["config", "delete", "some.key"]) - assert res.failed - assert "Settings key doesn't exist" in res.stderr - - def test_add_single_argument(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 72ebb5bb83f3c0bc72f428d1dfde08ccf70dadd2 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 11:59:21 +0200 Subject: [PATCH 14/26] Migrate TestAddSingleArgument from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 33 +++++++++++++++++++ test/test_config.py | 31 ----------------- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 52464f5be6b..6f4ebaa7470 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -304,3 +304,36 @@ func TestAddRemoveSetDeleteOnUnexistingKey(t *testing.T) { require.Error(t, err) require.Contains(t, string(stderr), "Settings key doesn't exist") } + +func TestAddSingleArgument(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies no additional urls are present + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") + + // Adds one URL + url := "https://example.com" + _, _, err = cli.Run("config", "add", "board_manager.additional_urls", url) + require.NoError(t, err) + + // Verifies URL has been saved + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com\"]") + + // Adds the same URL (should not error) + _, _, err = cli.Run("config", "add", "board_manager.additional_urls", url) + require.NoError(t, err) + + // Verifies a second copy has NOT been added + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com\"]") +} diff --git a/test/test_config.py b/test/test_config.py index 8292266e637..4df19bde563 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,37 +17,6 @@ import yaml -def test_add_single_argument(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies no additional urls are present - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [] == settings_json["board_manager"]["additional_urls"] - - # Adds one URL - url = "https://example.com" - assert run_command(["config", "add", "board_manager.additional_urls", url]) - - # Verifies URL has been saved - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert ["https://example.com"] == settings_json["board_manager"]["additional_urls"] - - # Adds the same URL (should not error) - url = "https://example.com" - assert run_command(["config", "add", "board_manager.additional_urls", url]) - - # Verifies a second copy has NOT been added - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert ["https://example.com"] == settings_json["board_manager"]["additional_urls"] - - def test_add_multiple_arguments(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 1cc99f1eb2751eae3282cceb902e056653795302 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 12:21:09 +0200 Subject: [PATCH 15/26] Migrate TestAddMultipleArguments from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 78 +++++++++++++++++++ test/test_config.py | 54 ------------- 2 files changed, 78 insertions(+), 54 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 6f4ebaa7470..84faf708c8d 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -337,3 +337,81 @@ func TestAddSingleArgument(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com\"]") } + +func TestAddMultipleArguments(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies no additional urls are present + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") + + // Adds multiple URLs at the same time + urls := [3]string{ + "https://example.com/package_example_index.json", + "https://example.com/yet_another_package_example_index.json", + } + _, _, err = cli.Run("config", "add", "board_manager.additional_urls", urls[0], urls[1]) + require.NoError(t, err) + + // Verifies URL has been saved + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "2") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/package_example_index.json", + "https://example.com/yet_another_package_example_index.json" + ] + } + }`) + + // Adds both the same URLs a second time + _, _, err = cli.Run("config", "add", "board_manager.additional_urls", urls[0], urls[1]) + require.NoError(t, err) + + // Verifies no change in result array + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "2") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/package_example_index.json", + "https://example.com/yet_another_package_example_index.json" + ] + } + }`) + + // Adds multiple URLs ... the middle one is the only new URL + urls = [3]string{ + "https://example.com/package_example_index.json", + "https://example.com/a_third_package_example_index.json", + "https://example.com/yet_another_package_example_index.json", + } + _, _, err = cli.Run("config", "add", "board_manager.additional_urls", urls[0], urls[1], urls[2]) + require.NoError(t, err) + + // Verifies URL has been saved + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "3") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/package_example_index.json", + "https://example.com/a_third_package_example_index.json", + "https://example.com/yet_another_package_example_index.json" + ] + } + }`) +} diff --git a/test/test_config.py b/test/test_config.py index 4df19bde563..13e87c62d03 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,60 +17,6 @@ import yaml -def test_add_multiple_arguments(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies no additional urls are present - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [] == settings_json["board_manager"]["additional_urls"] - - # Adds multiple URLs at the same time - urls = [ - "https://example.com/package_example_index.json", - "https://example.com/yet_another_package_example_index.json", - ] - assert run_command(["config", "add", "board_manager.additional_urls"] + urls) - - # Verifies URL has been saved - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 2 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - - # Adds both the same URLs a second time - assert run_command(["config", "add", "board_manager.additional_urls"] + urls) - - # Verifies no change in result array - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 2 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - - # Adds multiple URLs ... the middle one is the only new URL - urls = [ - "https://example.com/package_example_index.json", - "https://example.com/a_third_package_example_index.json", - "https://example.com/yet_another_package_example_index.json", - ] - assert run_command(["config", "add", "board_manager.additional_urls"] + urls) - - # Verifies URL has been saved - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 3 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - assert urls[2] in settings_json["board_manager"]["additional_urls"] - - def test_add_on_unsupported_key(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From d685bfcbcd01c3e59d8f3e77330ab1e6ad5d5689 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 12:27:23 +0200 Subject: [PATCH 16/26] Migrate TestAddOnUnsupportedKey from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 24 +++++++++++++++++++ test/test_config.py | 22 ----------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 84faf708c8d..9c22c83d7ca 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -415,3 +415,27 @@ func TestAddMultipleArguments(t *testing.T) { } }`) } + +func TestAddOnUnsupportedKey(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default value + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".daemon | .port", "\"50051\"") + + // Tries and fails to add a new item + _, stderr, err := cli.Run("config", "add", "daemon.port", "50000") + require.Error(t, err) + require.Contains(t, string(stderr), "The key 'daemon.port' is not a list of items, can't add to it.\nMaybe use 'config set'?") + + // Verifies value is not changed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".daemon | .port", "\"50051\"") +} diff --git a/test/test_config.py b/test/test_config.py index 13e87c62d03..97e20d691af 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,28 +17,6 @@ import yaml -def test_add_on_unsupported_key(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default value - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert "50051" == settings_json["daemon"]["port"] - - # Tries and fails to add a new item - result = run_command(["config", "add", "daemon.port", "50000"]) - assert result.failed - assert "The key 'daemon.port' is not a list of items, can't add to it.\nMaybe use 'config set'?" in result.stderr - - # Verifies value is not changed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert "50051" == settings_json["daemon"]["port"] - - def test_remove_single_argument(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 0105ca6de34efbce6decbf1827063fee39ad4745 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 12:34:51 +0200 Subject: [PATCH 17/26] Migrate TestRemoveSingleArgument from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 40 +++++++++++++++++++ test/test_config.py | 31 -------------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 9c22c83d7ca..91ce2ac5acf 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -439,3 +439,43 @@ func TestAddOnUnsupportedKey(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".daemon | .port", "\"50051\"") } + +func TestRemoveSingleArgument(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Adds URLs + urls := [2]string{ + "https://example.com/package_example_index.json", + "https://example.com/yet_another_package_example_index.json", + } + _, _, err = cli.Run("config", "add", "board_manager.additional_urls", urls[0], urls[1]) + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "2") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/package_example_index.json", + "https://example.com/yet_another_package_example_index.json" + ] + } + }`) + + // Remove first URL + _, _, err = cli.Run("config", "remove", "board_manager.additional_urls", urls[0]) + require.NoError(t, err) + + // Verifies URLs has been removed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com/yet_another_package_example_index.json\"]") +} diff --git a/test/test_config.py b/test/test_config.py index 97e20d691af..61670f55635 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,37 +17,6 @@ import yaml -def test_remove_single_argument(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Adds URLs - urls = [ - "https://example.com/package_example_index.json", - "https://example.com/yet_another_package_example_index.json", - ] - assert run_command(["config", "add", "board_manager.additional_urls"] + urls) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 2 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - - # Remove first URL - assert run_command(["config", "remove", "board_manager.additional_urls", urls[0]]) - - # Verifies URLs has been removed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert ["https://example.com/yet_another_package_example_index.json"] == settings_json["board_manager"][ - "additional_urls" - ] - - def test_remove_multiple_arguments(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 467a4ed767958246d75db2283eb372cfb914a965 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 12:38:55 +0200 Subject: [PATCH 18/26] Migrate TestRemoveMultipleArguments from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 40 +++++++++++++++++++ test/test_config.py | 29 -------------- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 91ce2ac5acf..3f5fb4cb478 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -479,3 +479,43 @@ func TestRemoveSingleArgument(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com/yet_another_package_example_index.json\"]") } + +func TestRemoveMultipleArguments(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Adds URLs + urls := [2]string{ + "https://example.com/package_example_index.json", + "https://example.com/yet_another_package_example_index.json", + } + _, _, err = cli.Run("config", "add", "board_manager.additional_urls", urls[0], urls[1]) + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "2") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/package_example_index.json", + "https://example.com/yet_another_package_example_index.json" + ] + } + }`) + + // Remove all URLs + _, _, err = cli.Run("config", "remove", "board_manager.additional_urls", urls[0], urls[1]) + require.NoError(t, err) + + // Verifies all URLs have been removed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") +} diff --git a/test/test_config.py b/test/test_config.py index 61670f55635..55d91ba173e 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,35 +17,6 @@ import yaml -def test_remove_multiple_arguments(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Adds URLs - urls = [ - "https://example.com/package_example_index.json", - "https://example.com/yet_another_package_example_index.json", - ] - assert run_command(["config", "add", "board_manager.additional_urls"] + urls) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 2 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - - # Remove all URLs - assert run_command(["config", "remove", "board_manager.additional_urls"] + urls) - - # Verifies all URLs have been removed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [] == settings_json["board_manager"]["additional_urls"] - - def test_remove_on_unsupported_key(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 9f5b0f52ffa97b4067a10a532bcd21fdd955db3b Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 12:42:34 +0200 Subject: [PATCH 19/26] Migrate TestRemoveOnUnsupportedKey from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 24 ++++++++++++++++++ test/test_config.py | 25 ------------------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 3f5fb4cb478..37bffd3576e 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -519,3 +519,27 @@ func TestRemoveMultipleArguments(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") } + +func TestRemoveOnUnsupportedKey(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default value + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".daemon | .port", "\"50051\"") + + // Tries and fails to remove an item + _, stderr, err := cli.Run("config", "remove", "daemon.port", "50051") + require.Error(t, err) + require.Contains(t, string(stderr), "The key 'daemon.port' is not a list of items, can't remove from it.\nMaybe use 'config delete'?") + + // Verifies value is not changed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".daemon | .port", "\"50051\"") +} diff --git a/test/test_config.py b/test/test_config.py index 55d91ba173e..8e129a138e9 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,31 +17,6 @@ import yaml -def test_remove_on_unsupported_key(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default value - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert "50051" == settings_json["daemon"]["port"] - - # Tries and fails to add a new item - result = run_command(["config", "remove", "daemon.port", "50051"]) - assert result.failed - assert ( - "The key 'daemon.port' is not a list of items, can't remove from it.\nMaybe use 'config delete'?" - in result.stderr - ) - - # Verifies value is not changed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert "50051" == settings_json["daemon"]["port"] - - def test_set_slice_with_single_argument(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 5020c1445836157e9f2bb723ffd84199795d369a Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 14:55:38 +0200 Subject: [PATCH 20/26] Migrate TestSetSliceWithSingleArgument from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 34 +++++++++++++++++++ test/test_config.py | 31 ----------------- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 37bffd3576e..3898b5db53b 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -543,3 +543,37 @@ func TestRemoveOnUnsupportedKey(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".daemon | .port", "\"50051\"") } + +func TestSetSliceWithSingleArgument(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") + + // Set an URL in the list + url := "https://example.com/package_example_index.json" + _, _, err = cli.Run("config", "set", "board_manager.additional_urls", url) + require.NoError(t, err) + + // Verifies value is changed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com/package_example_index.json\"]") + + // Set an URL in the list + url = "https://example.com/yet_another_package_example_index.json" + _, _, err = cli.Run("config", "set", "board_manager.additional_urls", url) + require.NoError(t, err) + + // Verifies value is changed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com/yet_another_package_example_index.json\"]") +} diff --git a/test/test_config.py b/test/test_config.py index 8e129a138e9..dce225eb355 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,37 +17,6 @@ import yaml -def test_set_slice_with_single_argument(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [] == settings_json["board_manager"]["additional_urls"] - - # Set an URL in the list - url = "https://example.com/package_example_index.json" - assert run_command(["config", "set", "board_manager.additional_urls", url]) - - # Verifies value is changed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [url] == settings_json["board_manager"]["additional_urls"] - - # Sets another URL - url = "https://example.com/yet_another_package_example_index.json" - assert run_command(["config", "set", "board_manager.additional_urls", url]) - - # Verifies previous value is overwritten - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [url] == settings_json["board_manager"]["additional_urls"] - - def test_set_slice_with_multiple_arguments(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 1a1edfdd32696df74c84b0801363c00cbaf342b8 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 15:30:24 +0200 Subject: [PATCH 21/26] Migrate TestSetSliceWithMultipleArguments from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 87 +++++++++++++++++++ test/test_config.py | 66 -------------- 2 files changed, 87 insertions(+), 66 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 3898b5db53b..1d66d0bfb30 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -577,3 +577,90 @@ func TestSetSliceWithSingleArgument(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[\"https://example.com/yet_another_package_example_index.json\"]") } + +func TestSetSliceWithMultipleArguments(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") + + // Set some URLs in the list + urls := [7]string{ + "https://example.com/first_package_index.json", + "https://example.com/second_package_index.json", + } + _, _, err = cli.Run("config", "set", "board_manager.additional_urls", urls[0], urls[1]) + require.NoError(t, err) + + // Verifies value is changed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "2") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/first_package_index.json", + "https://example.com/second_package_index.json" + ] + } + }`) + + // Set some URLs in the list + urls = [7]string{ + "https://example.com/third_package_index.json", + "https://example.com/fourth_package_index.json", + } + _, _, err = cli.Run("config", "set", "board_manager.additional_urls", urls[0], urls[1]) + require.NoError(t, err) + + // Verifies previous value is overwritten + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "2") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/third_package_index.json", + "https://example.com/fourth_package_index.json" + ] + } + }`) + + // Sets a third set of 7 URLs (with only 4 unique values) + urls = [7]string{ + "https://example.com/first_package_index.json", + "https://example.com/second_package_index.json", + "https://example.com/first_package_index.json", + "https://example.com/fifth_package_index.json", + "https://example.com/second_package_index.json", + "https://example.com/sixth_package_index.json", + "https://example.com/first_package_index.json", + } + _, _, err = cli.Run("config", "set", "board_manager.additional_urls", urls[0], urls[1], urls[2], urls[3], urls[4], urls[5], urls[6]) + require.NoError(t, err) + + // Verifies all unique values exist in config + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls | length", "4") + requirejson.Contains(t, stdout, ` + { + "board_manager": { + "additional_urls": [ + "https://example.com/first_package_index.json", + "https://example.com/second_package_index.json", + "https://example.com/fifth_package_index.json", + "https://example.com/sixth_package_index.json" + ] + } + }`) +} diff --git a/test/test_config.py b/test/test_config.py index dce225eb355..830f8f35a44 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,72 +17,6 @@ import yaml -def test_set_slice_with_multiple_arguments(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [] == settings_json["board_manager"]["additional_urls"] - - # Set some URLs in the list - urls = [ - "https://example.com/first_package_index.json", - "https://example.com/second_package_index.json", - ] - assert run_command(["config", "set", "board_manager.additional_urls"] + urls) - - # Verifies value is changed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 2 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - - # Sets another set of URL - urls = [ - "https://example.com/third_package_index.json", - "https://example.com/fourth_package_index.json", - ] - assert run_command(["config", "set", "board_manager.additional_urls"] + urls) - - # Verifies previous value is overwritten - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 2 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - - # Sets a third set of 7 URLs (with only 4 unique values) - urls = [ - "https://example.com/first_package_index.json", - "https://example.com/second_package_index.json", - "https://example.com/first_package_index.json", - "https://example.com/fifth_package_index.json", - "https://example.com/second_package_index.json", - "https://example.com/sixth_package_index.json", - "https://example.com/first_package_index.json", - ] - assert run_command(["config", "set", "board_manager.additional_urls"] + urls) - - # Verifies all unique values exist in config - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert 4 == len(settings_json["board_manager"]["additional_urls"]) - assert urls[0] in settings_json["board_manager"]["additional_urls"] - assert urls[1] in settings_json["board_manager"]["additional_urls"] - assert urls[2] in settings_json["board_manager"]["additional_urls"] - assert urls[3] in settings_json["board_manager"]["additional_urls"] - assert urls[4] in settings_json["board_manager"]["additional_urls"] - assert urls[5] in settings_json["board_manager"]["additional_urls"] - assert urls[6] in settings_json["board_manager"]["additional_urls"] - - def test_set_string_with_single_argument(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 621755b11996c2e0d47c2bbfbd1872687b3dbec6 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 15:51:51 +0200 Subject: [PATCH 22/26] Migrate TestSetStringWithSingleArgument from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 23 +++++++++++++++++++ test/test_config.py | 20 ---------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 1d66d0bfb30..3ca8f358336 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -664,3 +664,26 @@ func TestSetSliceWithMultipleArguments(t *testing.T) { } }`) } + +func TestSetStringWithSingleArgument(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".logging | .level", "\"info\"") + + // Changes value + _, _, err = cli.Run("config", "set", "logging.level", "trace") + require.NoError(t, err) + + // Verifies value is changed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".logging | .level", "\"trace\"") +} diff --git a/test/test_config.py b/test/test_config.py index 830f8f35a44..f852032e119 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,26 +17,6 @@ import yaml -def test_set_string_with_single_argument(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert "info" == settings_json["logging"]["level"] - - # Changes value - assert run_command(["config", "set", "logging.level", "trace"]) - - # Verifies value is changed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert "trace" == settings_json["logging"]["level"] - - def test_set_string_with_multiple_arguments(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 0d455ab9a2d77344b23af586ff44ebd0a1c1149a Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 15:54:38 +0200 Subject: [PATCH 23/26] Migrate TestSetStringWithMultipleArguments from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 19 +++++++++++++++++++ test/test_config.py | 16 ---------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 3ca8f358336..c8124d7f223 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -687,3 +687,22 @@ func TestSetStringWithSingleArgument(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".logging | .level", "\"trace\"") } + +func TestSetStringWithMultipleArguments(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".logging | .level", "\"info\"") + + // Tries to change value + _, stderr, err := cli.Run("config", "set", "logging.level", "trace", "debug") + require.Error(t, err) + require.Contains(t, string(stderr), "Can't set multiple values in key logging.level") +} diff --git a/test/test_config.py b/test/test_config.py index f852032e119..8020ba4d627 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,22 +17,6 @@ import yaml -def test_set_string_with_multiple_arguments(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert "info" == settings_json["logging"]["level"] - - # Tries to change value - res = run_command(["config", "set", "logging.level", "trace", "debug"]) - assert res.failed - assert "Can't set multiple values in key logging.level" in res.stderr - - def test_set_bool_with_single_argument(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From b2feb4266b936ec36c20aea54c482761c37df53a Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 15:58:05 +0200 Subject: [PATCH 24/26] Migrate TestSetBoolWithSingleArgument from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 23 +++++++++++++++++++ test/test_config.py | 20 ---------------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index c8124d7f223..5969bbab766 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -706,3 +706,26 @@ func TestSetStringWithMultipleArguments(t *testing.T) { require.Error(t, err) require.Contains(t, string(stderr), "Can't set multiple values in key logging.level") } + +func TestSetBoolWithSingleArgument(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".library | .enable_unsafe_install", "false") + + // Changes value + _, _, err = cli.Run("config", "set", "library.enable_unsafe_install", "true") + require.NoError(t, err) + + // Verifies value is changed + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".library | .enable_unsafe_install", "true") +} diff --git a/test/test_config.py b/test/test_config.py index 8020ba4d627..050c1e960b6 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,26 +17,6 @@ import yaml -def test_set_bool_with_single_argument(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert not settings_json["library"]["enable_unsafe_install"] - - # Changes value - assert run_command(["config", "set", "library.enable_unsafe_install", "true"]) - - # Verifies value is changed - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert settings_json["library"]["enable_unsafe_install"] - - def test_set_bool_with_multiple_arguments(run_command): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 5bfcf313da08688d1c0bdba8451162139788e2e2 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 16:00:08 +0200 Subject: [PATCH 25/26] Migrate TestSetBoolWithMultipleArguments from test_config.py to config_test.go --- .../integrationtest/config/config_test.go | 19 +++++++++++++++++++ test/test_config.py | 16 ---------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 5969bbab766..741f3cbe31b 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -729,3 +729,22 @@ func TestSetBoolWithSingleArgument(t *testing.T) { require.NoError(t, err) requirejson.Query(t, stdout, ".library | .enable_unsafe_install", "true") } + +func TestSetBoolWithMultipleArguments(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".library | .enable_unsafe_install", "false") + + // Changes value + _, stderr, err := cli.Run("config", "set", "library.enable_unsafe_install", "true", "foo") + require.Error(t, err) + require.Contains(t, string(stderr), "Can't set multiple values in key library.enable_unsafe_install") +} diff --git a/test/test_config.py b/test/test_config.py index 050c1e960b6..9ac5f33d6f2 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -17,22 +17,6 @@ import yaml -def test_set_bool_with_multiple_arguments(run_command): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert not settings_json["library"]["enable_unsafe_install"] - - # Changes value' - res = run_command(["config", "set", "library.enable_unsafe_install", "true", "foo"]) - assert res.failed - assert "Can't set multiple values in key library.enable_unsafe_install" in res.stderr - - def test_delete(run_command, working_dir): # Create a config file assert run_command(["config", "init", "--dest-dir", "."]) From 4e3aec25c925a808d263f0d41564fc597e0618d2 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 28 Sep 2022 16:09:14 +0200 Subject: [PATCH 26/26] Migrate TestDelete to config_test.go and delete config_test.py --- .../integrationtest/config/config_test.go | 44 +++++++++++++++ test/test_config.py | 55 ------------------- 2 files changed, 44 insertions(+), 55 deletions(-) delete mode 100644 test/test_config.py diff --git a/internal/integrationtest/config/config_test.go b/internal/integrationtest/config/config_test.go index 741f3cbe31b..4b773969d83 100644 --- a/internal/integrationtest/config/config_test.go +++ b/internal/integrationtest/config/config_test.go @@ -748,3 +748,47 @@ func TestSetBoolWithMultipleArguments(t *testing.T) { require.Error(t, err) require.Contains(t, string(stderr), "Can't set multiple values in key library.enable_unsafe_install") } + +func TestDelete(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Create a config file + _, _, err := cli.Run("config", "init", "--dest-dir", ".") + require.NoError(t, err) + + // Verifies default state + stdout, _, err := cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".library | .enable_unsafe_install", "false") + + // Delete config key + _, _, err = cli.Run("config", "delete", "library.enable_unsafe_install") + require.NoError(t, err) + + // Verifies value is not found, we read directly from file instead of using + // the dump command since that would still print the deleted value if it has + // a default + configFile := cli.WorkingDir().Join("arduino-cli.yaml") + configLines, err := configFile.ReadFileAsLines() + require.NoError(t, err) + require.NotContains(t, configLines, "enable_unsafe_install") + + // Verifies default state + stdout, _, err = cli.Run("config", "dump", "--format", "json") + require.NoError(t, err) + requirejson.Query(t, stdout, ".board_manager | .additional_urls", "[]") + + // Delete config key and sub keys + _, _, err = cli.Run("config", "delete", "board_manager") + require.NoError(t, err) + + // Verifies value is not found, we read directly from file instead of using + // the dump command since that would still print the deleted value if it has + // a default + configFile = cli.WorkingDir().Join("arduino-cli.yaml") + configLines, err = configFile.ReadFileAsLines() + require.NoError(t, err) + require.NotContains(t, configLines, "additional_urls") + require.NotContains(t, configLines, "board_manager") +} diff --git a/test/test_config.py b/test/test_config.py deleted file mode 100644 index 9ac5f33d6f2..00000000000 --- a/test/test_config.py +++ /dev/null @@ -1,55 +0,0 @@ -# This file is part of arduino-cli. -# -# Copyright 2020 ARDUINO SA (http://www.arduino.cc/) -# -# This software is released under the GNU General Public License version 3, -# which covers the main part of arduino-cli. -# The terms of this license can be found at: -# https://www.gnu.org/licenses/gpl-3.0.en.html -# -# You can be released from the requirements of the above licenses by purchasing -# a commercial license. Buying such a license is mandatory if you want to modify or -# otherwise use the software for commercial activities involving the Arduino -# software without disclosing the source code of your own applications. To purchase -# a commercial license, send an email to license@arduino.cc. -from pathlib import Path -import json -import yaml - - -def test_delete(run_command, working_dir): - # Create a config file - assert run_command(["config", "init", "--dest-dir", "."]) - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert not settings_json["library"]["enable_unsafe_install"] - - # Delete config key - assert run_command(["config", "delete", "library.enable_unsafe_install"]) - - # Verifies value is not found, we read directly from file instead of using - # the dump command since that would still print the deleted value if it has - # a default - config_file = Path(working_dir, "arduino-cli.yaml") - config_lines = config_file.open().readlines() - assert "enable_unsafe_install" not in config_lines - - # Verifies default state - result = run_command(["config", "dump", "--format", "json"]) - assert result.ok - settings_json = json.loads(result.stdout) - assert [] == settings_json["board_manager"]["additional_urls"] - - # Delete config key and sub keys - assert run_command(["config", "delete", "board_manager"]) - - # Verifies value is not found, we read directly from file instead of using - # the dump command since that would still print the deleted value if it has - # a default - config_file = Path(working_dir, "arduino-cli.yaml") - config_lines = config_file.open().readlines() - assert "additional_urls" not in config_lines - assert "board_manager" not in config_lines