diff --git a/commands/compile/compile.go b/commands/compile/compile.go index 9d5398f3d59..03a2093da9f 100644 --- a/commands/compile/compile.go +++ b/commands/compile/compile.go @@ -124,7 +124,7 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream builderCtx.OtherLibrariesDirs = paths.NewPathList(req.GetLibraries()...) builderCtx.OtherLibrariesDirs.Add(configuration.LibrariesDir(configuration.Settings)) builderCtx.LibraryDirs = paths.NewPathList(req.Library...) - if len(builderCtx.OtherLibrariesDirs) > 0 || len(builderCtx.LibraryDirs) > 0 { + if len(req.GetLibraries()) > 0 || len(req.GetLibrary()) > 0 { builderCtx.LibrariesManager = nil // let the builder rebuild the library manager } if req.GetBuildPath() == "" { diff --git a/test/test_profiles.py b/test/test_profiles.py new file mode 100644 index 00000000000..0402dc00f2c --- /dev/null +++ b/test/test_profiles.py @@ -0,0 +1,30 @@ +# 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 diff --git a/test/testdata/sketch_with_profile/sketch.yaml b/test/testdata/sketch_with_profile/sketch.yaml new file mode 100644 index 00000000000..ed40ce874f3 --- /dev/null +++ b/test/testdata/sketch_with_profile/sketch.yaml @@ -0,0 +1,12 @@ +profiles: + avr1: + fqbn: arduino:avr:uno + platforms: + - platform: arduino:avr (1.8.5) + + avr2: + fqbn: arduino:avr:uno + platforms: + - platform: arduino:avr (1.8.5) + libraries: + - Arduino_JSON (0.1.0) diff --git a/test/testdata/sketch_with_profile/sketch_with_profile.ino b/test/testdata/sketch_with_profile/sketch_with_profile.ino new file mode 100644 index 00000000000..60929bf8a86 --- /dev/null +++ b/test/testdata/sketch_with_profile/sketch_with_profile.ino @@ -0,0 +1,4 @@ +#include + +void setup() {} +void loop() {}