Skip to content

Commit

Permalink
[skip-changelog] Fixed initialization of profile libraries (#1739)
Browse files Browse the repository at this point in the history
* Fixed initializaion of profile libraries

* Apply suggestions from code review

The library must be installed globally in order to provide coverage of the bug.

Co-authored-by: per1234 <accounts@perglass.com>

Co-authored-by: per1234 <accounts@perglass.com>
  • Loading branch information
cmaglie and per1234 committed May 25, 2022
1 parent 7e9e4ca commit f0245bc
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 1 deletion.
2 changes: 1 addition & 1 deletion commands/compile/compile.go
Original file line number Diff line number Diff line change
Expand Up @@ -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() == "" {
Expand Down
30 changes: 30 additions & 0 deletions test/test_profiles.py
Original file line number Diff line number Diff line change
@@ -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
12 changes: 12 additions & 0 deletions test/testdata/sketch_with_profile/sketch.yaml
Original file line number Diff line number Diff line change
@@ -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)
4 changes: 4 additions & 0 deletions test/testdata/sketch_with_profile/sketch_with_profile.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#include <Arduino_JSON.h>

void setup() {}
void loop() {}

0 comments on commit f0245bc

Please sign in to comment.