From 8dc5c2cc9da00978938a7c335773609c7346f72a Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Thu, 1 Sep 2022 10:35:06 +0200 Subject: [PATCH 1/3] Migrated TestUpgrade from test_upgrade.py to upgrade_test.go --- .../integrationtest/upgrade/upgrade_test.go | 62 +++++++++++++++++++ test/test_upgrade.py | 29 --------- 2 files changed, 62 insertions(+), 29 deletions(-) create mode 100644 internal/integrationtest/upgrade/upgrade_test.go diff --git a/internal/integrationtest/upgrade/upgrade_test.go b/internal/integrationtest/upgrade/upgrade_test.go new file mode 100644 index 00000000000..f68229b2653 --- /dev/null +++ b/internal/integrationtest/upgrade/upgrade_test.go @@ -0,0 +1,62 @@ +// 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 upgrade_test + +import ( + "strings" + "testing" + + "github.com/arduino/arduino-cli/internal/integrationtest" + "github.com/stretchr/testify/require" +) + +func TestUpgrade(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Updates index for cores and libraries + _, _, err := cli.Run("core", "update-idex") + require.NoError(t, err) + _, _, err = cli.Run("lib", "update-idex") + require.NoError(t, err) + + // Installs an outdated core and library + _, _, err = cli.Run("core", "install", "arduino:avr@1.6.3") + require.NoError(t, err) + _, _, err = cli.Run("lib", "install", "USBHost@1.0.0") + require.NoError(t, err) + + // Installs an outdated core and library + _, _, err = cli.Run("core", "install", "arduino:samd") + require.NoError(t, err) + _, _, err = cli.Run("lib", "install", "ArduinoJson") + require.NoError(t, err) + + // Verifies outdated core and libraries are shown + stdout, _, err := cli.Run("outdated") + require.NoError(t, err) + lines := strings.Split(string(stdout), "\n") + require.Contains(t, lines[1], "Arduino AVR Boards") + require.Contains(t, lines[4], "USBHost") + + _, _, err = cli.Run("upgrade") + require.NoError(t, err) + + // Verifies cores and libraries have been updated + stdout, _, err = cli.Run("outdated") + require.NoError(t, err) + require.Equal(t, string(stdout), "\n") +} diff --git a/test/test_upgrade.py b/test/test_upgrade.py index 00093a3b4aa..7145290907b 100644 --- a/test/test_upgrade.py +++ b/test/test_upgrade.py @@ -16,35 +16,6 @@ from pathlib import Path -def test_upgrade(run_command): - # Updates index for cores and libraries - run_command(["core", "update-index"]) - run_command(["lib", "update-index"]) - - # Installs an outdated core and library - run_command(["core", "install", "arduino:avr@1.6.3"]) - assert run_command(["lib", "install", "USBHost@1.0.0"]) - - # Installs latest version of a core and a library - run_command(["core", "install", "arduino:samd"]) - assert run_command(["lib", "install", "ArduinoJson"]) - - # Verifies outdated core and libraries are shown - result = run_command(["outdated"]) - assert result.ok - lines = result.stdout.splitlines() - assert "Arduino AVR Boards" in lines[1] - assert "USBHost" in lines[4] - - result = run_command(["upgrade"]) - assert result.ok - - # Verifies cores and libraries have been updated - result = run_command(["outdated"]) - assert result.ok - assert result.stdout == "\n" - - def test_upgrade_using_library_with_invalid_version(run_command, data_dir): assert run_command(["update"]) From bba2cd1a519e54ff3a98d9121b0228117c4cbafc Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Thu, 1 Sep 2022 10:49:28 +0200 Subject: [PATCH 2/3] Migrated TestUpgradeUsingLibraryWithInvalidVersion from test_upgrade.py to upgrade_test.go --- .../integrationtest/upgrade/upgrade_test.go | 27 +++++++++++++++++++ test/test_upgrade.py | 22 --------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/internal/integrationtest/upgrade/upgrade_test.go b/internal/integrationtest/upgrade/upgrade_test.go index f68229b2653..87f0ea02f9b 100644 --- a/internal/integrationtest/upgrade/upgrade_test.go +++ b/internal/integrationtest/upgrade/upgrade_test.go @@ -60,3 +60,30 @@ func TestUpgrade(t *testing.T) { require.NoError(t, err) require.Equal(t, string(stdout), "\n") } + +func TestUpgradeUsingLibraryWithInvalidVersion(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + _, _, err := cli.Run("update") + require.NoError(t, err) + + // Install latest version of a library + _, _, err = cli.Run("lib", "install", "WiFi101") + require.NoError(t, err) + + // Verifies library is not shown + stdout, _, err := cli.Run("outdated") + require.NoError(t, err) + require.NotContains(t, string(stdout), "WiFi101") + + // Changes the version of the currently installed library so that it's invalid + libPropPath := cli.SketchbookDir().Join("libraries", "WiFi101", "library.properties") + err = libPropPath.WriteFile([]byte("name=WiFi101\nversion=1.0001")) + require.NoError(t, err) + + // Verifies library gets upgraded + stdout, _, err = cli.Run("upgrade") + require.NoError(t, err) + require.Contains(t, string(stdout), "WiFi101") +} diff --git a/test/test_upgrade.py b/test/test_upgrade.py index 7145290907b..7b61b9fd314 100644 --- a/test/test_upgrade.py +++ b/test/test_upgrade.py @@ -16,28 +16,6 @@ from pathlib import Path -def test_upgrade_using_library_with_invalid_version(run_command, data_dir): - assert run_command(["update"]) - - # Install latest version of a library - assert run_command(["lib", "install", "WiFi101"]) - - # Verifies library is not shown - res = run_command(["outdated"]) - assert res.ok - assert "WiFi101" not in res.stdout - - # Changes the version of the currently installed library so that it's - # invalid - lib_path = Path(data_dir, "libraries", "WiFi101") - Path(lib_path, "library.properties").write_text("name=WiFi101\nversion=1.0001") - - # Verifies library gets upgraded - res = run_command(["upgrade"]) - assert res.ok - assert "WiFi101" in res.stdout - - def test_upgrade_unused_core_tools_are_removed(run_command, data_dir): assert run_command(["update"]) From bf3c2f6656623dcfa69b071b844214fd0a58cf84 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Thu, 1 Sep 2022 11:04:09 +0200 Subject: [PATCH 3/3] Migrated TestUpgradeUnusedCoreToolsAreRemoved to upgrade_test.go and deleted test_upgrade.py --- .../integrationtest/upgrade/upgrade_test.go | 23 +++++++++++++ test/test_upgrade.py | 33 ------------------- 2 files changed, 23 insertions(+), 33 deletions(-) delete mode 100644 test/test_upgrade.py diff --git a/internal/integrationtest/upgrade/upgrade_test.go b/internal/integrationtest/upgrade/upgrade_test.go index 87f0ea02f9b..4c503d80fef 100644 --- a/internal/integrationtest/upgrade/upgrade_test.go +++ b/internal/integrationtest/upgrade/upgrade_test.go @@ -87,3 +87,26 @@ func TestUpgradeUsingLibraryWithInvalidVersion(t *testing.T) { require.NoError(t, err) require.Contains(t, string(stdout), "WiFi101") } + +func TestUpgradeUnusedCoreToolsAreRemoved(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + _, _, err := cli.Run("update") + require.NoError(t, err) + + // Installs a core + _, _, err = cli.Run("core", "install", "arduino:avr@1.8.2") + require.NoError(t, err) + + // Verifies expected tool is installed + toolPath := cli.DataDir().Join("packages", "arduino", "tools", "avr-gcc", "7.3.0-atmel3.6.1-arduino5") + require.DirExists(t, toolPath.String()) + + // Upgrades everything + _, _, err = cli.Run("upgrade") + require.NoError(t, err) + + // Verifies tool is uninstalled since it's not used by newer core version + require.NoDirExists(t, toolPath.String()) +} diff --git a/test/test_upgrade.py b/test/test_upgrade.py deleted file mode 100644 index 7b61b9fd314..00000000000 --- a/test/test_upgrade.py +++ /dev/null @@ -1,33 +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 - - -def test_upgrade_unused_core_tools_are_removed(run_command, data_dir): - assert run_command(["update"]) - - # Installs a core - assert run_command(["core", "install", "arduino:avr@1.8.2"]) - - # Verifies expected tool is installed - tool_path = Path(data_dir, "packages", "arduino", "tools", "avr-gcc", "7.3.0-atmel3.6.1-arduino5") - assert tool_path.exists() - - # Upgrades everything - assert run_command(["upgrade"]) - - # Verifies tool is uninstalled since it's not used by newer core version - assert not tool_path.exists()