Skip to content

Commit 90994dd

Browse files
Refactor AddAdditionalEntriesToContext
#32 * refactor AddAdditionalEntriesToContext in a function * use the new function in all the tests * Move the assignaton of LibrariesResolutionResults inside the ResolveLibrary func The ResolveLibrary func is only called by the ContainerFindIncludes * rename bPath to buildPath * cleanup usless tests * remove shadowed variable
1 parent 868d325 commit 90994dd

8 files changed

+42
-67
lines changed

legacy/builder/add_additional_entries_to_context.go

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,32 @@ package builder
1717

1818
import (
1919
"github.com/arduino/arduino-cli/legacy/builder/constants"
20-
"github.com/arduino/arduino-cli/legacy/builder/types"
20+
"github.com/arduino/go-paths-helper"
2121
"github.com/pkg/errors"
2222
)
2323

24-
type AddAdditionalEntriesToContext struct{}
24+
func AddAdditionalEntriesToContext(buildPath *paths.Path, warningLevel string) (*paths.Path, *paths.Path, *paths.Path, string, error) {
25+
var sketchBuildPath, librariesBuildPath, coreBuildPath *paths.Path
26+
var err error
2527

26-
func (*AddAdditionalEntriesToContext) Run(ctx *types.Context) error {
27-
if ctx.BuildPath != nil {
28-
buildPath := ctx.BuildPath
29-
sketchBuildPath, err := buildPath.Join(constants.FOLDER_SKETCH).Abs()
28+
if buildPath != nil {
29+
sketchBuildPath, err = buildPath.Join(constants.FOLDER_SKETCH).Abs()
3030
if err != nil {
31-
return errors.WithStack(err)
31+
return nil, nil, nil, "", errors.WithStack(err)
3232
}
33-
librariesBuildPath, err := buildPath.Join(constants.FOLDER_LIBRARIES).Abs()
33+
librariesBuildPath, err = buildPath.Join(constants.FOLDER_LIBRARIES).Abs()
3434
if err != nil {
35-
return errors.WithStack(err)
35+
return nil, nil, nil, "", errors.WithStack(err)
3636
}
37-
coreBuildPath, err := buildPath.Join(constants.FOLDER_CORE).Abs()
37+
coreBuildPath, err = buildPath.Join(constants.FOLDER_CORE).Abs()
3838
if err != nil {
39-
return errors.WithStack(err)
39+
return nil, nil, nil, "", errors.WithStack(err)
4040
}
41-
42-
ctx.SketchBuildPath = sketchBuildPath
43-
ctx.LibrariesBuildPath = librariesBuildPath
44-
ctx.CoreBuildPath = coreBuildPath
4541
}
4642

47-
if ctx.WarningsLevel == "" {
48-
ctx.WarningsLevel = DEFAULT_WARNINGS_LEVEL
43+
if warningLevel == "" {
44+
warningLevel = DEFAULT_WARNINGS_LEVEL
4945
}
5046

51-
ctx.LibrariesResolutionResults = map[string]types.LibraryResolutionResult{}
52-
53-
return nil
47+
return sketchBuildPath, librariesBuildPath, coreBuildPath, warningLevel, nil
5448
}

legacy/builder/container_find_includes.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,10 @@ func ResolveLibrary(ctx *types.Context, header string) *libraries.Library {
447447
resolver := ctx.LibrariesResolver
448448
importedLibraries := ctx.ImportedLibraries
449449

450+
if ctx.LibrariesResolutionResults == nil {
451+
ctx.LibrariesResolutionResults = map[string]types.LibraryResolutionResult{}
452+
}
453+
450454
candidates := resolver.AlternativesFor(header)
451455

452456
if ctx.Verbose {

legacy/builder/container_setup.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,17 @@ import (
2323
type ContainerSetupHardwareToolsLibsSketchAndProps struct{}
2424

2525
func (s *ContainerSetupHardwareToolsLibsSketchAndProps) Run(ctx *types.Context) error {
26+
sketchBuildPath, librariesBuildPath, coreBuildPath,
27+
warningsLevel, err := AddAdditionalEntriesToContext(ctx.BuildPath, ctx.WarningsLevel)
28+
if err != nil {
29+
return errors.WithStack(err)
30+
}
31+
ctx.SketchBuildPath = sketchBuildPath
32+
ctx.LibrariesBuildPath = librariesBuildPath
33+
ctx.CoreBuildPath = coreBuildPath
34+
ctx.WarningsLevel = warningsLevel
35+
2636
commands := []types.Command{
27-
&AddAdditionalEntriesToContext{},
2837
&FailIfBuildPathEqualsSketchPath{},
2938
&LibrariesLoader{},
3039
}

legacy/builder/test/add_additional_entries_to_context_test.go

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,30 +28,28 @@ import (
2828
func TestAddAdditionalEntriesToContextNoBuildPath(t *testing.T) {
2929
ctx := &types.Context{}
3030

31-
command := builder.AddAdditionalEntriesToContext{}
32-
NoError(t, command.Run(ctx))
31+
sketchBuildPath, librariesBuildPath, coreBuildPath,
32+
warningsLevel, err := builder.AddAdditionalEntriesToContext(ctx.BuildPath, ctx.WarningsLevel)
33+
NoError(t, err)
3334

34-
require.Empty(t, ctx.SketchBuildPath)
35-
require.Empty(t, ctx.LibrariesBuildPath)
36-
require.Empty(t, ctx.CoreBuildPath)
35+
require.Empty(t, sketchBuildPath)
36+
require.Empty(t, librariesBuildPath)
37+
require.Empty(t, coreBuildPath)
3738

38-
require.NotNil(t, ctx.WarningsLevel)
39-
40-
require.Equal(t, 0, len(ctx.LibrariesResolutionResults))
39+
require.NotNil(t, warningsLevel)
4140
}
4241

4342
func TestAddAdditionalEntriesToContextWithBuildPath(t *testing.T) {
4443
ctx := &types.Context{}
4544
ctx.BuildPath = paths.New("folder")
4645

47-
command := builder.AddAdditionalEntriesToContext{}
48-
NoError(t, command.Run(ctx))
49-
50-
require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_SKETCH)), ctx.SketchBuildPath)
51-
require.Equal(t, Abs(t, paths.New("folder", "libraries")), ctx.LibrariesBuildPath)
52-
require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_CORE)), ctx.CoreBuildPath)
46+
sketchBuildPath, librariesBuildPath, coreBuildPath,
47+
warningsLevel, err := builder.AddAdditionalEntriesToContext(ctx.BuildPath, ctx.WarningsLevel)
48+
NoError(t, err)
5349

54-
require.NotNil(t, ctx.WarningsLevel)
50+
require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_SKETCH)), sketchBuildPath)
51+
require.Equal(t, Abs(t, paths.New("folder", "libraries")), librariesBuildPath)
52+
require.Equal(t, Abs(t, paths.New("folder", constants.FOLDER_CORE)), coreBuildPath)
5553

56-
require.Equal(t, 0, len(ctx.LibrariesResolutionResults))
54+
require.NotNil(t, warningsLevel)
5755
}

legacy/builder/test/hardware_loader_test.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"runtime"
2121
"testing"
2222

23-
"github.com/arduino/arduino-cli/legacy/builder"
2423
"github.com/arduino/arduino-cli/legacy/builder/types"
2524
paths "github.com/arduino/go-paths-helper"
2625
"github.com/stretchr/testify/require"
@@ -69,14 +68,6 @@ func TestLoadHardwareMixingUserHardwareFolder(t *testing.T) {
6968
ctx = prepareBuilderTestContext(t, ctx, nil, "")
7069
defer cleanUpBuilderTestContext(t, ctx)
7170

72-
commands := []types.Command{
73-
&builder.AddAdditionalEntriesToContext{},
74-
}
75-
for _, command := range commands {
76-
err := command.Run(ctx)
77-
NoError(t, err)
78-
}
79-
8071
packages := ctx.PackageManager.GetPackages()
8172

8273
if runtime.GOOS == "windows" {

legacy/builder/test/libraries_loader_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ func TestLoadLibrariesAVR(t *testing.T) {
4848
defer cleanUpBuilderTestContext(t, ctx)
4949

5050
commands := []types.Command{
51-
&builder.AddAdditionalEntriesToContext{},
5251
&builder.LibrariesLoader{},
5352
}
5453
for _, command := range commands {
@@ -154,7 +153,6 @@ func TestLoadLibrariesSAM(t *testing.T) {
154153
defer cleanUpBuilderTestContext(t, ctx)
155154

156155
commands := []types.Command{
157-
&builder.AddAdditionalEntriesToContext{},
158156
&builder.LibrariesLoader{},
159157
}
160158
for _, command := range commands {
@@ -233,7 +231,6 @@ func TestLoadLibrariesAVRNoDuplicateLibrariesFolders(t *testing.T) {
233231
defer cleanUpBuilderTestContext(t, ctx)
234232

235233
commands := []types.Command{
236-
&builder.AddAdditionalEntriesToContext{},
237234
&builder.LibrariesLoader{},
238235
}
239236
for _, command := range commands {
@@ -258,7 +255,6 @@ func TestLoadLibrariesMyAVRPlatform(t *testing.T) {
258255
defer cleanUpBuilderTestContext(t, ctx)
259256

260257
commands := []types.Command{
261-
&builder.AddAdditionalEntriesToContext{},
262258
&builder.LibrariesLoader{},
263259
}
264260
for _, command := range commands {

legacy/builder/test/recipe_runner_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ func TestRecipeRunner(t *testing.T) {
3535
buildProperties.Set("recipe.hooks.prebuild.1.pattern", "echo")
3636

3737
commands := []types.Command{
38-
&builder.AddAdditionalEntriesToContext{},
3938
&builder.RecipeByPrefixSuffixRunner{Prefix: "recipe.hooks.prebuild", Suffix: ".pattern"},
4039
}
4140

legacy/builder/test/setup_build_properties_test.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,6 @@ func TestSetupBuildProperties(t *testing.T) {
3434
ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "arduino:avr:uno")
3535
defer cleanUpBuilderTestContext(t, ctx)
3636

37-
commands := []types.Command{
38-
&builder.AddAdditionalEntriesToContext{},
39-
}
40-
for _, command := range commands {
41-
err := command.Run(ctx)
42-
NoError(t, err)
43-
}
44-
4537
buildProperties := ctx.BuildProperties
4638

4739
require.Equal(t, "ARDUINO", buildProperties.Get("software"))
@@ -108,14 +100,6 @@ func TestSetupBuildPropertiesUserHardware(t *testing.T) {
108100
ctx = prepareBuilderTestContext(t, ctx, paths.New("sketch1", "sketch1.ino"), "my_avr_platform:avr:custom_yun")
109101
defer cleanUpBuilderTestContext(t, ctx)
110102

111-
commands := []types.Command{
112-
&builder.AddAdditionalEntriesToContext{},
113-
}
114-
for _, command := range commands {
115-
err := command.Run(ctx)
116-
NoError(t, err)
117-
}
118-
119103
buildProperties := ctx.BuildProperties
120104

121105
require.Equal(t, "ARDUINO", buildProperties.Get("software"))

0 commit comments

Comments
 (0)