From 585f62cad44c5780cd690f67d1ef0b4596f690ca Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 28 Sep 2020 16:04:04 +0200 Subject: [PATCH 1/2] Do not overwrite full headers list with declared 'includes' in library.properties Otherwise the automatic library discovery would be affected. Fix #960 --- arduino/libraries/libraries.go | 11 ++++++++++- arduino/libraries/loader.go | 2 +- commands/lib/list.go | 7 +------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/arduino/libraries/libraries.go b/arduino/libraries/libraries.go index 4403fa2ce50..da154d23e2d 100644 --- a/arduino/libraries/libraries.go +++ b/arduino/libraries/libraries.go @@ -73,6 +73,7 @@ type Library struct { License string Properties *properties.Map Examples paths.PathList + declaredHeaders []string sourceHeaders []string } @@ -157,7 +158,15 @@ func (library *Library) LocationPriorityFor(platformRelease, refPlatformRelease return 0 } -// SourceHeaders returns the C++ headers in the library. +// DeclaredHeaders returns the C++ headers that the library declares in library.properties +func (library *Library) DeclaredHeaders() []string { + if library.declaredHeaders == nil { + library.declaredHeaders = []string{} + } + return library.declaredHeaders +} + +// SourceHeaders returns all the C++ headers in the library even if not declared in library.properties func (library *Library) SourceHeaders() ([]string, error) { if library.sourceHeaders == nil { cppHeaders, err := library.SourceDir.ReadDir() diff --git a/arduino/libraries/loader.go b/arduino/libraries/loader.go index 912fc312606..8e8462536e4 100644 --- a/arduino/libraries/loader.go +++ b/arduino/libraries/loader.go @@ -101,7 +101,7 @@ func makeNewLibrary(libraryDir *paths.Path, location LibraryLocation) (*Library, } if includes := libProperties.Get("includes"); includes != "" { - library.sourceHeaders = commaSeparatedToList(includes) + library.declaredHeaders = commaSeparatedToList(includes) } if err := addExamples(library); err != nil { diff --git a/commands/lib/list.go b/commands/lib/list.go index beecf6bbab3..e34ea5e07c4 100644 --- a/commands/lib/list.go +++ b/commands/lib/list.go @@ -146,11 +146,6 @@ func GetOutputLibrary(lib *libraries.Library) (*rpc.Library, error) { cntplat = lib.ContainerPlatform.String() } - libHeaders, err := lib.SourceHeaders() - if err != nil { - return nil, errors.Errorf("getting library headers: %s", err) - } - return &rpc.Library{ Name: lib.Name, Author: lib.Author, @@ -175,7 +170,7 @@ func GetOutputLibrary(lib *libraries.Library) (*rpc.Library, error) { Version: lib.Version.String(), License: lib.License, Examples: lib.Examples.AsStrings(), - ProvidesIncludes: libHeaders, + ProvidesIncludes: lib.DeclaredHeaders(), }, nil } From c59f3446d08d2145cb40286f0b522a80f3518a65 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 28 Sep 2020 18:06:29 +0200 Subject: [PATCH 2/2] fixed tests for 'provides_includes' --- test/test_lib.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/test/test_lib.py b/test/test_lib.py index e7c0a5e5d91..e4335f2ebc5 100644 --- a/test/test_lib.py +++ b/test/test_lib.py @@ -56,21 +56,18 @@ def test_list(run_command): assert 1 == len(data) # be sure data contains the available version assert "" != data[0]["release"]["version"] - # be sure data contains the correct provides_includes field - assert "ArduinoJson.h" == data[0]["library"]["provides_includes"][0] - assert "ArduinoJson.hpp" == data[0]["library"]["provides_includes"][1] # Install something we can list without provides_includes field given in library.properties - result = run_command("lib install Braccio@2.0.4") + result = run_command("lib install Arduino_APDS9960@1.0.3") assert result.ok # Look at the JSON output - result = run_command("lib list Braccio --format json") + result = run_command("lib list Arduino_APDS9960 --format json") assert result.ok assert "" == result.stderr data = json.loads(result.stdout) assert 1 == len(data) # be sure data contains the correct provides_includes field - assert "Braccio.h" == data[0]["library"]["provides_includes"][0] + assert "Arduino_APDS9960.h" == data[0]["library"]["provides_includes"][0] def test_install(run_command):