Skip to content

Commit a9fd1c6

Browse files
committed
Moved Sketch in Context
Signed-off-by: Cristian Maglie <[email protected]>
1 parent 377bebe commit a9fd1c6

16 files changed

+33
-41
lines changed

src/arduino.cc/builder/additional_sketch_files_copier.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
package builder
3131

3232
import (
33-
"arduino.cc/builder/constants"
3433
"arduino.cc/builder/i18n"
3534
"arduino.cc/builder/types"
3635
"arduino.cc/builder/utils"
@@ -42,7 +41,7 @@ import (
4241
type AdditionalSketchFilesCopier struct{}
4342

4443
func (s *AdditionalSketchFilesCopier) Run(context map[string]interface{}, ctx *types.Context) error {
45-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
44+
sketch := ctx.Sketch
4645
sketchBuildPath := ctx.SketchBuildPath
4746

4847
err := utils.EnsureFolderExists(sketchBuildPath)

src/arduino.cc/builder/collect_ctags_from_sketch_files.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
package builder
3131

3232
import (
33-
"arduino.cc/builder/constants"
3433
"arduino.cc/builder/types"
3534
"arduino.cc/builder/utils"
3635
"strings"
@@ -39,8 +38,7 @@ import (
3938
type CollectCTagsFromSketchFiles struct{}
4039

4140
func (s *CollectCTagsFromSketchFiles) Run(context map[string]interface{}, ctx *types.Context) error {
42-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
43-
sketchFileNames := collectSketchFileNamesFrom(sketch)
41+
sketchFileNames := collectSketchFileNamesFrom(ctx.Sketch)
4442

4543
allCtags := ctx.CTagsOfPreprocessedSource
4644
ctagsOfSketch := []*types.CTag{}

src/arduino.cc/builder/constants/constants.go

-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ const CTX_OBJECT_FILES_CORE = "objectFilesCore"
8888
const CTX_OBJECT_FILES_LIBRARIES = "objectFilesLibraries"
8989
const CTX_OBJECT_FILES_SKETCH = "objectFilesSketch"
9090
const CTX_PLATFORM_KEYS_REWRITE = "platformKeysRewrite"
91-
const CTX_SKETCH = "sketch"
9291
const CTX_SOURCE = "source"
9392
const CTX_TOOLS = "tools"
9493
const CTX_VIDPID = "VIDPID"

src/arduino.cc/builder/container_find_includes.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func (s *ContainerFindIncludes) Run(context map[string]interface{}, ctx *types.C
4646
}
4747

4848
sketchBuildPath := ctx.SketchBuildPath
49-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
49+
sketch := ctx.Sketch
5050
err = findIncludesUntilDone(context, ctx, filepath.Join(sketchBuildPath, filepath.Base(sketch.MainFile.Name)+".cpp"))
5151
if err != nil {
5252
return i18n.WrapError(err)

src/arduino.cc/builder/gcc_preproc_runner.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ type GCCPreprocRunner struct {
4646

4747
func (s *GCCPreprocRunner) Run(context map[string]interface{}, ctx *types.Context) error {
4848
sketchBuildPath := ctx.SketchBuildPath
49-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
49+
sketch := ctx.Sketch
5050
properties, targetFilePath, err := prepareGCCPreprocRecipeProperties(context, ctx, filepath.Join(sketchBuildPath, filepath.Base(sketch.MainFile.Name)+".cpp"), s.TargetFileName)
5151
if err != nil {
5252
return i18n.WrapError(err)

src/arduino.cc/builder/merge_sketch_with_bootloader.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func (s *MergeSketchWithBootloader) Run(context map[string]interface{}, ctx *typ
4848
}
4949

5050
buildPath := ctx.BuildPath
51-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
51+
sketch := ctx.Sketch
5252
sketchFileName := filepath.Base(sketch.MainFile.Name)
5353
logger := ctx.GetLogger()
5454

src/arduino.cc/builder/setup_build_properties.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ func (s *SetupBuildProperties) Run(context map[string]interface{}, ctx *types.Co
5757
if ctx.BuildPath != "" {
5858
buildProperties[constants.BUILD_PROPERTIES_BUILD_PATH] = ctx.BuildPath
5959
}
60-
if utils.MapHas(context, constants.CTX_SKETCH) {
61-
buildProperties[constants.BUILD_PROPERTIES_BUILD_PROJECT_NAME] = filepath.Base(context[constants.CTX_SKETCH].(*types.Sketch).MainFile.Name)
60+
if ctx.Sketch != nil {
61+
buildProperties[constants.BUILD_PROPERTIES_BUILD_PROJECT_NAME] = filepath.Base(ctx.Sketch.MainFile.Name)
6262
}
6363
buildProperties[constants.BUILD_PROPERTIES_BUILD_ARCH] = strings.ToUpper(targetPlatform.PlatformId)
6464

src/arduino.cc/builder/sketch_loader.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (s *SketchLoader) Run(context map[string]interface{}, ctx *types.Context) e
8282
}
8383

8484
ctx.SketchLocation = sketchLocation
85-
context[constants.CTX_SKETCH] = sketch
85+
ctx.Sketch = sketch
8686

8787
return nil
8888
}

src/arduino.cc/builder/sketch_saver.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import (
4040
type SketchSaver struct{}
4141

4242
func (s *SketchSaver) Run(context map[string]interface{}, ctx *types.Context) error {
43-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
43+
sketch := ctx.Sketch
4444
sketchBuildPath := ctx.SketchBuildPath
4545
source := context[constants.CTX_SOURCE].(string)
4646

src/arduino.cc/builder/sketch_source_merger.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import (
4040
type SketchSourceMerger struct{}
4141

4242
func (s *SketchSourceMerger) Run(context map[string]interface{}, ctx *types.Context) error {
43-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
43+
sketch := ctx.Sketch
4444

4545
lineOffset := 0
4646
includeSection := ""

src/arduino.cc/builder/test/coan_runner_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func TestCoanRunner(t *testing.T) {
6868
NoError(t, err)
6969
}
7070

71-
expectedSource := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.resolved.directives.txt"), context)
71+
expectedSource := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.resolved.directives.txt"), context, ctx)
7272
require.Equal(t, expectedSource, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
7373

7474
}

src/arduino.cc/builder/test/helper.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import (
4444
"text/template"
4545
)
4646

47-
func LoadAndInterpolate(t *testing.T, filename string, context map[string]interface{}) string {
47+
func LoadAndInterpolate(t *testing.T, filename string, context map[string]interface{}, ctx *types.Context) string {
4848
funcsMap := template.FuncMap{
4949
"EscapeBackSlashes": func(s string) string {
5050
return strings.Replace(s, "\\", "\\\\", -1)
@@ -55,6 +55,7 @@ func LoadAndInterpolate(t *testing.T, filename string, context map[string]interf
5555
NoError(t, err)
5656

5757
var buf bytes.Buffer
58+
context["sketch"] = ctx.Sketch
5859
err = tpl.Execute(&buf, context)
5960
NoError(t, err)
6061

src/arduino.cc/builder/test/prototypes_adder_test.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func TestPrototypesAdderSketchWithIfDef(t *testing.T) {
124124
NoError(t, err)
125125
}
126126

127-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.preprocessed.txt"), context)
127+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.preprocessed.txt"), context, ctx)
128128
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
129129
}
130130

@@ -165,7 +165,7 @@ func TestPrototypesAdderBaladuino(t *testing.T) {
165165
NoError(t, err)
166166
}
167167

168-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch3", "Baladuino.preprocessed.txt"), context)
168+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch3", "Baladuino.preprocessed.txt"), context, ctx)
169169
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
170170
}
171171

@@ -206,7 +206,7 @@ func TestPrototypesAdderCharWithEscapedDoubleQuote(t *testing.T) {
206206
NoError(t, err)
207207
}
208208

209-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch4", "CharWithEscapedDoubleQuote.preprocessed.txt"), context)
209+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch4", "CharWithEscapedDoubleQuote.preprocessed.txt"), context, ctx)
210210
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
211211
}
212212

@@ -247,7 +247,7 @@ func TestPrototypesAdderIncludeBetweenMultilineComment(t *testing.T) {
247247
NoError(t, err)
248248
}
249249

250-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch5", "IncludeBetweenMultilineComment.preprocessed.txt"), context)
250+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch5", "IncludeBetweenMultilineComment.preprocessed.txt"), context, ctx)
251251
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
252252
}
253253

@@ -288,7 +288,7 @@ func TestPrototypesAdderLineContinuations(t *testing.T) {
288288
NoError(t, err)
289289
}
290290

291-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch6", "LineContinuations.preprocessed.txt"), context)
291+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch6", "LineContinuations.preprocessed.txt"), context, ctx)
292292
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
293293
}
294294

@@ -329,7 +329,7 @@ func TestPrototypesAdderStringWithComment(t *testing.T) {
329329
NoError(t, err)
330330
}
331331

332-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch7", "StringWithComment.preprocessed.txt"), context)
332+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch7", "StringWithComment.preprocessed.txt"), context, ctx)
333333
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
334334
}
335335

@@ -370,7 +370,7 @@ func TestPrototypesAdderSketchWithStruct(t *testing.T) {
370370
NoError(t, err)
371371
}
372372

373-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch8", "SketchWithStruct.preprocessed.txt"), context)
373+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch8", "SketchWithStruct.preprocessed.txt"), context, ctx)
374374
obtained := strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)
375375
// ctags based preprocessing removes the space after "dostuff", but this is still OK
376376
// TODO: remove this exception when moving to a more powerful parser
@@ -422,7 +422,7 @@ func TestPrototypesAdderSketchWithConfig(t *testing.T) {
422422
require.Equal(t, "#include <Arduino.h>\n#line 1 \""+absoluteSketchLocation+"\"\n", context[constants.CTX_INCLUDE_SECTION].(string))
423423
require.Equal(t, "#line 13 \""+absoluteSketchLocation+"\"\nvoid setup();\n#line 17 \""+absoluteSketchLocation+"\"\nvoid loop();\n#line 13 \""+absoluteSketchLocation+"\"\n", ctx.PrototypesSection)
424424

425-
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch_with_config", "sketch_with_config.preprocessed.txt"), context)
425+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch_with_config", "sketch_with_config.preprocessed.txt"), context, ctx)
426426
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
427427
}
428428

@@ -793,7 +793,7 @@ func TestPrototypesAdderSketchWithIfDef2(t *testing.T) {
793793
require.Equal(t, "#include <Arduino.h>\n#line 1 \""+absoluteSketchLocation+"\"\n", context[constants.CTX_INCLUDE_SECTION].(string))
794794
require.Equal(t, "#line 5 \""+absoluteSketchLocation+"\"\nvoid elseBranch();\n#line 9 \""+absoluteSketchLocation+"\"\nvoid f1();\n#line 10 \""+absoluteSketchLocation+"\"\nvoid f2();\n#line 12 \""+absoluteSketchLocation+"\"\nvoid setup();\n#line 14 \""+absoluteSketchLocation+"\"\nvoid loop();\n#line 5 \""+absoluteSketchLocation+"\"\n", ctx.PrototypesSection)
795795

796-
expectedSource := LoadAndInterpolate(t, filepath.Join("sketch_with_ifdef", "sketch.preprocessed.txt"), context)
796+
expectedSource := LoadAndInterpolate(t, filepath.Join("sketch_with_ifdef", "sketch.preprocessed.txt"), context, ctx)
797797
require.Equal(t, expectedSource, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
798798
}
799799

@@ -840,7 +840,7 @@ func TestPrototypesAdderSketchWithIfDef2SAM(t *testing.T) {
840840
require.Equal(t, "#include <Arduino.h>\n#line 1 \""+absoluteSketchLocation+"\"\n", context[constants.CTX_INCLUDE_SECTION].(string))
841841
require.Equal(t, "#line 2 \""+absoluteSketchLocation+"\"\nvoid ifBranch();\n#line 9 \""+absoluteSketchLocation+"\"\nvoid f1();\n#line 10 \""+absoluteSketchLocation+"\"\nvoid f2();\n#line 12 \""+absoluteSketchLocation+"\"\nvoid setup();\n#line 14 \""+absoluteSketchLocation+"\"\nvoid loop();\n#line 2 \""+absoluteSketchLocation+"\"\n", ctx.PrototypesSection)
842842

843-
expectedSource := LoadAndInterpolate(t, filepath.Join("sketch_with_ifdef", "sketch.preprocessed.SAM.txt"), context)
843+
expectedSource := LoadAndInterpolate(t, filepath.Join("sketch_with_ifdef", "sketch.preprocessed.SAM.txt"), context, ctx)
844844
require.Equal(t, expectedSource, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
845845
}
846846

src/arduino.cc/builder/test/sketch_loader_test.go

+7-14
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ package test
3131

3232
import (
3333
"arduino.cc/builder"
34-
"arduino.cc/builder/constants"
3534
"arduino.cc/builder/types"
3635
"github.com/stretchr/testify/require"
3736
"path/filepath"
@@ -48,9 +47,7 @@ func TestLoadSketchWithFolder(t *testing.T) {
4847
err := loader.Run(context, ctx)
4948

5049
require.Error(t, err)
51-
52-
sketch := context[constants.CTX_SKETCH]
53-
require.Nil(t, sketch)
50+
require.Nil(t, ctx.Sketch)
5451
}
5552

5653
func TestLoadSketchNonExistentPath(t *testing.T) {
@@ -63,9 +60,7 @@ func TestLoadSketchNonExistentPath(t *testing.T) {
6360
err := loader.Run(context, ctx)
6461

6562
require.Error(t, err)
66-
67-
sketch := context[constants.CTX_SKETCH]
68-
require.Nil(t, sketch)
63+
require.Nil(t, ctx.Sketch)
6964
}
7065

7166
func TestLoadSketch(t *testing.T) {
@@ -83,7 +78,7 @@ func TestLoadSketch(t *testing.T) {
8378
NoError(t, err)
8479
}
8580

86-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
81+
sketch := ctx.Sketch
8782
require.NotNil(t, sketch)
8883

8984
require.Contains(t, sketch.MainFile.Name, "sketch.ino")
@@ -107,9 +102,7 @@ func TestFailToLoadSketchFromFolder(t *testing.T) {
107102
loader := builder.SketchLoader{}
108103
err := loader.Run(context, ctx)
109104
require.Error(t, err)
110-
111-
sketch := context[constants.CTX_SKETCH]
112-
require.Nil(t, sketch)
105+
require.Nil(t, ctx.Sketch)
113106
}
114107

115108
func TestLoadSketchFromFolder(t *testing.T) {
@@ -127,7 +120,7 @@ func TestLoadSketchFromFolder(t *testing.T) {
127120
NoError(t, err)
128121
}
129122

130-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
123+
sketch := ctx.Sketch
131124
require.NotNil(t, sketch)
132125

133126
require.Contains(t, sketch.MainFile.Name, "sketch_with_subfolders.ino")
@@ -154,7 +147,7 @@ func TestLoadSketchWithBackup(t *testing.T) {
154147
NoError(t, err)
155148
}
156149

157-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
150+
sketch := ctx.Sketch
158151
require.NotNil(t, sketch)
159152

160153
require.Contains(t, sketch.MainFile.Name, "sketch.ino")
@@ -178,7 +171,7 @@ func TestLoadSketchWithMacOSXGarbage(t *testing.T) {
178171
NoError(t, err)
179172
}
180173

181-
sketch := context[constants.CTX_SKETCH].(*types.Sketch)
174+
sketch := ctx.Sketch
182175
require.NotNil(t, sketch)
183176

184177
require.Contains(t, sketch.MainFile.Name, "sketch.ino")

src/arduino.cc/builder/test/sketch_source_merger_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,6 @@ func TestMergeSketch(t *testing.T) {
5858

5959
source := context[constants.CTX_SOURCE].(string)
6060

61-
expected_source := LoadAndInterpolate(t, filepath.Join("sketch1", "merged_sketch.txt"), context)
61+
expected_source := LoadAndInterpolate(t, filepath.Join("sketch1", "merged_sketch.txt"), context, ctx)
6262
require.Equal(t, expected_source, strings.Replace(source, "\r\n", "\n", -1))
6363
}

src/arduino.cc/builder/types/context.go

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ type Context struct {
3535
CollectedSourceFiles *UniqueStringQueue
3636
FoldersWithSourceFiles *UniqueSourceFolderQueue
3737

38+
Sketch *Sketch
39+
3840
WarningsLevel string
3941

4042
// Libraries handling

0 commit comments

Comments
 (0)