diff --git a/legacy/builder/add_additional_entries_to_context.go b/legacy/builder/add_additional_entries_to_context.go index 9e9fdd80669..843cbdcd79e 100644 --- a/legacy/builder/add_additional_entries_to_context.go +++ b/legacy/builder/add_additional_entries_to_context.go @@ -17,38 +17,32 @@ package builder import ( "github.com/arduino/arduino-cli/legacy/builder/constants" - "github.com/arduino/arduino-cli/legacy/builder/types" + "github.com/arduino/go-paths-helper" "github.com/pkg/errors" ) -type AddAdditionalEntriesToContext struct{} +func AddAdditionalEntriesToContext(buildPath *paths.Path, warningLevel string) (*paths.Path, *paths.Path, *paths.Path, string, error) { + var sketchBuildPath, librariesBuildPath, coreBuildPath *paths.Path + var err error -func (*AddAdditionalEntriesToContext) Run(ctx *types.Context) error { - if ctx.BuildPath != nil { - buildPath := ctx.BuildPath - sketchBuildPath, err := buildPath.Join(constants.FOLDER_SKETCH).Abs() + if buildPath != nil { + sketchBuildPath, err = buildPath.Join(constants.FOLDER_SKETCH).Abs() if err != nil { - return errors.WithStack(err) + return nil, nil, nil, "", errors.WithStack(err) } - librariesBuildPath, err := buildPath.Join(constants.FOLDER_LIBRARIES).Abs() + librariesBuildPath, err = buildPath.Join(constants.FOLDER_LIBRARIES).Abs() if err != nil { - return errors.WithStack(err) + return nil, nil, nil, "", errors.WithStack(err) } - coreBuildPath, err := buildPath.Join(constants.FOLDER_CORE).Abs() + coreBuildPath, err = buildPath.Join(constants.FOLDER_CORE).Abs() if err != nil { - return errors.WithStack(err) + return nil, nil, nil, "", errors.WithStack(err) } - - ctx.SketchBuildPath = sketchBuildPath - ctx.LibrariesBuildPath = librariesBuildPath - ctx.CoreBuildPath = coreBuildPath } - if ctx.WarningsLevel == "" { - ctx.WarningsLevel = DEFAULT_WARNINGS_LEVEL + if warningLevel == "" { + warningLevel = DEFAULT_WARNINGS_LEVEL } - ctx.LibrariesResolutionResults = map[string]types.LibraryResolutionResult{} - - return nil + return sketchBuildPath, librariesBuildPath, coreBuildPath, warningLevel, nil } diff --git a/legacy/builder/container_find_includes.go b/legacy/builder/container_find_includes.go index 5d849b927ed..55b60347898 100644 --- a/legacy/builder/container_find_includes.go +++ b/legacy/builder/container_find_includes.go @@ -447,6 +447,10 @@ func ResolveLibrary(ctx *types.Context, header string) *libraries.Library { resolver := ctx.LibrariesResolver importedLibraries := ctx.ImportedLibraries + if ctx.LibrariesResolutionResults == nil { + ctx.LibrariesResolutionResults = map[string]types.LibraryResolutionResult{} + } + candidates := resolver.AlternativesFor(header) if ctx.Verbose { diff --git a/legacy/builder/container_setup.go b/legacy/builder/container_setup.go index 3a00ff6edaa..8a99df5c8a9 100644 --- a/legacy/builder/container_setup.go +++ b/legacy/builder/container_setup.go @@ -23,8 +23,17 @@ import ( type ContainerSetupHardwareToolsLibsSketchAndProps struct{} func (s *ContainerSetupHardwareToolsLibsSketchAndProps) Run(ctx *types.Context) error { + sketchBuildPath, librariesBuildPath, coreBuildPath, + warningsLevel, err := AddAdditionalEntriesToContext(ctx.BuildPath, ctx.WarningsLevel) + if err != nil { + return errors.WithStack(err) + } + ctx.SketchBuildPath = sketchBuildPath + ctx.LibrariesBuildPath = librariesBuildPath + ctx.CoreBuildPath = coreBuildPath + ctx.WarningsLevel = warningsLevel + commands := []types.Command{ - &AddAdditionalEntriesToContext{}, &FailIfBuildPathEqualsSketchPath{}, &LibrariesLoader{}, } diff --git a/legacy/builder/test/add_additional_entries_to_context_test.go b/legacy/builder/test/add_additional_entries_to_context_test.go index fc1edb5acb2..dc15e16697c 100644 --- a/legacy/builder/test/add_additional_entries_to_context_test.go +++ b/legacy/builder/test/add_additional_entries_to_context_test.go @@ -28,30 +28,28 @@ import ( func TestAddAdditionalEntriesToContextNoBuildPath(t *testing.T) { ctx := &types.Context{} - command := builder.AddAdditionalEntriesToContext{} - NoError(t, command.Run(ctx)) + sketchBuildPath, librariesBuildPath, coreBuildPath, + warningsLevel, err := builder.AddAdditionalEntriesToContext(ctx.BuildPath, ctx.WarningsLevel) + NoError(t, err) - require.Empty(t, ctx.SketchBuildPath) - require.Empty(t, ctx.LibrariesBuildPath) - require.Empty(t, ctx.CoreBuildPath) + require.Empty(t, sketchBuildPath) + require.Empty(t, librariesBuildPath) + require.Empty(t, coreBuildPath) - require.NotNil(t, ctx.WarningsLevel) - - require.Equal(t, 0, len(ctx.LibrariesResolutionResults)) + require.NotNil(t, warningsLevel) } func TestAddAdditionalEntriesToContextWithBuildPath(t *testing.T) { ctx := &types.Context{} ctx.BuildPath = paths.New("folder") - command := builder.AddAdditionalEntriesToContext{} - NoError(t, command.Run(ctx)) - - require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_SKETCH)), ctx.SketchBuildPath) - require.Equal(t, Abs(t, paths.New("folder", "libraries")), ctx.LibrariesBuildPath) - require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_CORE)), ctx.CoreBuildPath) + sketchBuildPath, librariesBuildPath, coreBuildPath, + warningsLevel, err := builder.AddAdditionalEntriesToContext(ctx.BuildPath, ctx.WarningsLevel) + NoError(t, err) - require.NotNil(t, ctx.WarningsLevel) + require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_SKETCH)), sketchBuildPath) + require.Equal(t, Abs(t, paths.New("folder", "libraries")), librariesBuildPath) + require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_CORE)), coreBuildPath) - require.Equal(t, 0, len(ctx.LibrariesResolutionResults)) + require.NotNil(t, warningsLevel) } diff --git a/legacy/builder/test/hardware_loader_test.go b/legacy/builder/test/hardware_loader_test.go index f900ad38ac3..c7e4b0ba387 100644 --- a/legacy/builder/test/hardware_loader_test.go +++ b/legacy/builder/test/hardware_loader_test.go @@ -20,7 +20,6 @@ import ( "runtime" "testing" - "github.com/arduino/arduino-cli/legacy/builder" "github.com/arduino/arduino-cli/legacy/builder/types" paths "github.com/arduino/go-paths-helper" "github.com/stretchr/testify/require" @@ -69,14 +68,6 @@ func TestLoadHardwareMixingUserHardwareFolder(t *testing.T) { ctx = prepareBuilderTestContext(t, ctx, nil, "") defer cleanUpBuilderTestContext(t, ctx) - commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, - } - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - packages := ctx.PackageManager.GetPackages() if runtime.GOOS == "windows" { diff --git a/legacy/builder/test/libraries_loader_test.go b/legacy/builder/test/libraries_loader_test.go index 143c1866221..a18880fed92 100644 --- a/legacy/builder/test/libraries_loader_test.go +++ b/legacy/builder/test/libraries_loader_test.go @@ -48,7 +48,6 @@ func TestLoadLibrariesAVR(t *testing.T) { defer cleanUpBuilderTestContext(t, ctx) commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, &builder.LibrariesLoader{}, } for _, command := range commands { @@ -154,7 +153,6 @@ func TestLoadLibrariesSAM(t *testing.T) { defer cleanUpBuilderTestContext(t, ctx) commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, &builder.LibrariesLoader{}, } for _, command := range commands { @@ -233,7 +231,6 @@ func TestLoadLibrariesAVRNoDuplicateLibrariesFolders(t *testing.T) { defer cleanUpBuilderTestContext(t, ctx) commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, &builder.LibrariesLoader{}, } for _, command := range commands { @@ -258,7 +255,6 @@ func TestLoadLibrariesMyAVRPlatform(t *testing.T) { defer cleanUpBuilderTestContext(t, ctx) commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, &builder.LibrariesLoader{}, } for _, command := range commands { diff --git a/legacy/builder/test/recipe_runner_test.go b/legacy/builder/test/recipe_runner_test.go index 6fb90bf7e68..5d9a53ef68e 100644 --- a/legacy/builder/test/recipe_runner_test.go +++ b/legacy/builder/test/recipe_runner_test.go @@ -35,7 +35,6 @@ func TestRecipeRunner(t *testing.T) { buildProperties.Set("recipe.hooks.prebuild.1.pattern", "echo") commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, &builder.RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.prebuild", Suffix: ".pattern"}, } diff --git a/legacy/builder/test/setup_build_properties_test.go b/legacy/builder/test/setup_build_properties_test.go index 1b595d5d69c..d26a217d398 100644 --- a/legacy/builder/test/setup_build_properties_test.go +++ b/legacy/builder/test/setup_build_properties_test.go @@ -34,14 +34,6 @@ func TestSetupBuildProperties(t *testing.T) { ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno") defer cleanUpBuilderTestContext(t, ctx) - commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, - } - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - buildProperties := ctx.BuildProperties require.Equal(t, "ARDUINO", buildProperties.Get("software")) @@ -108,14 +100,6 @@ func TestSetupBuildPropertiesUserHardware(t *testing.T) { ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "my_avr_platform:avr:custom_yun") defer cleanUpBuilderTestContext(t, ctx) - commands := []types.Command{ - &builder.AddAdditionalEntriesToContext{}, - } - for _, command := range commands { - err := command.Run(ctx) - NoError(t, err) - } - buildProperties := ctx.BuildProperties require.Equal(t, "ARDUINO", buildProperties.Get("software"))