From 614e53766f20ec6b065ee584bc49da5c0f50b1f3 Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Wed, 31 Aug 2022 17:57:29 +0200 Subject: [PATCH 1/2] Migrate TestCompileWithProfiles from test_profiles.py to profiles_test.go --- .../integrationtest/profiles/profiles_test.go | 45 +++++++++++++++++++ .../testdata/sketch_with_profile/sketch.yaml | 0 .../sketch_with_profile.ino | 0 test/test_profiles.py | 16 ------- 4 files changed, 45 insertions(+), 16 deletions(-) create mode 100644 internal/integrationtest/profiles/profiles_test.go rename {test => internal/integrationtest}/testdata/sketch_with_profile/sketch.yaml (100%) rename {test => internal/integrationtest}/testdata/sketch_with_profile/sketch_with_profile.ino (100%) diff --git a/internal/integrationtest/profiles/profiles_test.go b/internal/integrationtest/profiles/profiles_test.go new file mode 100644 index 00000000000..61cc8650ab9 --- /dev/null +++ b/internal/integrationtest/profiles/profiles_test.go @@ -0,0 +1,45 @@ +// 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 profiles_test + +import ( + "testing" + + "github.com/arduino/arduino-cli/internal/integrationtest" + "github.com/stretchr/testify/require" +) + +func TestCompileWithProfiles(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + // copy sketch_with_profile into the working directory + sketchPath := cli.CopySketch("sketch_with_profile") + + // use profile without a required library -> should fail + _, _, err = cli.Run("lib", "install", "Arduino_JSON") + require.NoError(t, err) + _, _, err = cli.Run("compile", "-m", "avr1", sketchPath.String()) + require.Error(t, err) + + // use profile with the required library -> should succeed + _, _, err = cli.Run("compile", "-m", "avr2", sketchPath.String()) + require.NoError(t, err) +} diff --git a/test/testdata/sketch_with_profile/sketch.yaml b/internal/integrationtest/testdata/sketch_with_profile/sketch.yaml similarity index 100% rename from test/testdata/sketch_with_profile/sketch.yaml rename to internal/integrationtest/testdata/sketch_with_profile/sketch.yaml diff --git a/test/testdata/sketch_with_profile/sketch_with_profile.ino b/internal/integrationtest/testdata/sketch_with_profile/sketch_with_profile.ino similarity index 100% rename from test/testdata/sketch_with_profile/sketch_with_profile.ino rename to internal/integrationtest/testdata/sketch_with_profile/sketch_with_profile.ino diff --git a/test/test_profiles.py b/test/test_profiles.py index 163adf734f1..2b9ef34a569 100644 --- a/test/test_profiles.py +++ b/test/test_profiles.py @@ -14,22 +14,6 @@ # a commercial license, send an email to license@arduino.cc. -def test_compile_with_profiles(run_command, copy_sketch): - # Init the environment explicitly - run_command(["core", "update-index"]) - - sketch_path = copy_sketch("sketch_with_profile") - - # use profile without a required library -> should fail - assert run_command(["lib", "install", "Arduino_JSON"]) - result = run_command(["compile", "-m", "avr1", sketch_path]) - assert result.failed - - # use profile with the required library -> should succeed - result = run_command(["compile", "-m", "avr2", sketch_path]) - assert result.ok - - def test_builder_did_not_catch_libs_from_unused_platforms(run_command, copy_sketch): # Init the environment explicitly run_command(["core", "update-index"]) From 5eae5de1b0956cce086bd349b7bf61db2516b31f Mon Sep 17 00:00:00 2001 From: Matteo Pologruto Date: Thu, 1 Sep 2022 09:00:05 +0200 Subject: [PATCH 2/2] Migrate TestBuilderDidNotCatchLibsFromUnusedPlatforms to profiles_test.go and delete test_profiles.py --- .../integrationtest/profiles/profiles_test.go | 26 +++++++++++++++ .../sketch_with_error_including_wire.ino | 0 test/test_profiles.py | 33 ------------------- 3 files changed, 26 insertions(+), 33 deletions(-) rename {test => internal/integrationtest}/testdata/sketch_with_error_including_wire/sketch_with_error_including_wire.ino (100%) delete mode 100644 test/test_profiles.py diff --git a/internal/integrationtest/profiles/profiles_test.go b/internal/integrationtest/profiles/profiles_test.go index 61cc8650ab9..9cd1ffcb556 100644 --- a/internal/integrationtest/profiles/profiles_test.go +++ b/internal/integrationtest/profiles/profiles_test.go @@ -43,3 +43,29 @@ func TestCompileWithProfiles(t *testing.T) { _, _, err = cli.Run("compile", "-m", "avr2", sketchPath.String()) require.NoError(t, err) } + +func TestBuilderDidNotCatchLibsFromUnusedPlatforms(t *testing.T) { + env, cli := integrationtest.CreateArduinoCLIWithEnvironment(t) + defer env.CleanUp() + + // Init the environment explicitly + _, _, err := cli.Run("core", "update-index") + require.NoError(t, err) + + // copy sketch into the working directory + sketchPath := cli.CopySketch("sketch_with_error_including_wire") + + // install two platforms with the Wire library bundled + _, _, err = cli.Run("core", "install", "arduino:avr") + require.NoError(t, err) + _, _, err = cli.Run("core", "install", "arduino:samd") + require.NoError(t, err) + + // compile for AVR + stdout, stderr, err := cli.Run("compile", "-b", "arduino:avr:uno", sketchPath.String()) + require.Error(t, err) + + // check that the libary resolver did not take the SAMD bundled Wire library into account + require.NotContains(t, string(stdout), "samd") + require.NotContains(t, string(stderr), "samd") +} diff --git a/test/testdata/sketch_with_error_including_wire/sketch_with_error_including_wire.ino b/internal/integrationtest/testdata/sketch_with_error_including_wire/sketch_with_error_including_wire.ino similarity index 100% rename from test/testdata/sketch_with_error_including_wire/sketch_with_error_including_wire.ino rename to internal/integrationtest/testdata/sketch_with_error_including_wire/sketch_with_error_including_wire.ino diff --git a/test/test_profiles.py b/test/test_profiles.py deleted file mode 100644 index 2b9ef34a569..00000000000 --- a/test/test_profiles.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. - - -def test_builder_did_not_catch_libs_from_unused_platforms(run_command, copy_sketch): - # Init the environment explicitly - run_command(["core", "update-index"]) - - sketch_path = copy_sketch("sketch_with_error_including_wire") - - # install two platforms with the Wire library bundled - assert run_command(["core", "install", "arduino:avr"]) - assert run_command(["core", "install", "arduino:samd"]) - - # compile for AVR - result = run_command(["compile", "-b", "arduino:avr:uno", sketch_path]) - assert result.failed - - # check that the libary resolver did not take the SAMD bundled Wire library into account - assert "samd" not in result.stdout - assert "samd" not in result.stderr