diff --git a/internal/integrationtest/profiles/profiles_test.go b/internal/integrationtest/profiles/profiles_test.go new file mode 100644 index 00000000000..9cd1ffcb556 --- /dev/null +++ b/internal/integrationtest/profiles/profiles_test.go @@ -0,0 +1,71 @@ +// 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) +} + +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/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 deleted file mode 100644 index 163adf734f1..00000000000 --- a/test/test_profiles.py +++ /dev/null @@ -1,49 +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_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"]) - - 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