diff --git a/src/arduino.cc/builder/sketch_source_merger.go b/src/arduino.cc/builder/sketch_source_merger.go index fdf7f9ec..a5fb4e75 100644 --- a/src/arduino.cc/builder/sketch_source_merger.go +++ b/src/arduino.cc/builder/sketch_source_merger.go @@ -32,7 +32,6 @@ package builder import ( "arduino.cc/builder/constants" "arduino.cc/builder/types" - "path/filepath" ) type SketchSourceMerger struct{} @@ -52,7 +51,7 @@ func (s *SketchSourceMerger) Run(context map[string]interface{}) error { } func addPreprocLine(sketch *types.SketchFile) string { - source := "#line 1 \"" + filepath.Base(sketch.Name) + "\"\n" + source := "#line 1 \"" + sketch.Name + "\"\n" source += sketch.Source source += "\n" diff --git a/src/arduino.cc/builder/test/coan_runner_test.go b/src/arduino.cc/builder/test/coan_runner_test.go index 0cd73240..86ee7ec3 100644 --- a/src/arduino.cc/builder/test/coan_runner_test.go +++ b/src/arduino.cc/builder/test/coan_runner_test.go @@ -34,7 +34,6 @@ import ( "arduino.cc/builder/constants" "arduino.cc/builder/types" "github.com/stretchr/testify/require" - "io/ioutil" "os" "path/filepath" "strings" @@ -68,10 +67,7 @@ func TestCoanRunner(t *testing.T) { NoError(t, err) } - bytes, err1 := ioutil.ReadFile(filepath.Join("sketch2", "SketchWithIfDef.resolved.directives.txt")) - NoError(t, err1) - expectedSource := string(bytes) - + expectedSource := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.resolved.directives.txt"), context) require.Equal(t, expectedSource, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } diff --git a/src/arduino.cc/builder/test/helper.go b/src/arduino.cc/builder/test/helper.go index 67ebb8cb..545e6b1d 100644 --- a/src/arduino.cc/builder/test/helper.go +++ b/src/arduino.cc/builder/test/helper.go @@ -38,8 +38,21 @@ import ( "io/ioutil" "path/filepath" "testing" + "text/template" + "bytes" ) +func LoadAndInterpolate(t *testing.T, filename string, context map[string]interface{}) string { + tpl, err := template.ParseFiles(filename) + NoError(t, err) + + var buf bytes.Buffer + err = tpl.Execute(&buf, context) + NoError(t, err) + + return buf.String() +} + func Abs(t *testing.T, rel string) string { toolPath, err := filepath.Abs(rel) NoError(t, err) diff --git a/src/arduino.cc/builder/test/prototypes_adder_test.go b/src/arduino.cc/builder/test/prototypes_adder_test.go index 44ab1b5e..527297d8 100644 --- a/src/arduino.cc/builder/test/prototypes_adder_test.go +++ b/src/arduino.cc/builder/test/prototypes_adder_test.go @@ -34,7 +34,6 @@ import ( "arduino.cc/builder/constants" "arduino.cc/builder/types" "github.com/stretchr/testify/require" - "io/ioutil" "os" "path/filepath" "strings" @@ -117,11 +116,7 @@ func TestPrototypesAdderSketchWithIfDef(t *testing.T) { NoError(t, err) } - bytes, err := ioutil.ReadFile(filepath.Join("sketch2", "SketchWithIfDef.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } @@ -161,11 +156,7 @@ func TestPrototypesAdderBaladuino(t *testing.T) { NoError(t, err) } - bytes, err := ioutil.ReadFile(filepath.Join("sketch3", "Baladuino.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch3", "Baladuino.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } @@ -205,11 +196,7 @@ func TestPrototypesAdderCharWithEscapedDoubleQuote(t *testing.T) { NoError(t, err) } - bytes, err := ioutil.ReadFile(filepath.Join("sketch4", "CharWithEscapedDoubleQuote.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch4", "CharWithEscapedDoubleQuote.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } @@ -249,11 +236,7 @@ func TestPrototypesAdderIncludeBetweenMultilineComment(t *testing.T) { NoError(t, err) } - bytes, err := ioutil.ReadFile(filepath.Join("sketch5", "IncludeBetweenMultilineComment.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch5", "IncludeBetweenMultilineComment.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } @@ -293,11 +276,7 @@ func TestPrototypesAdderLineContinuations(t *testing.T) { NoError(t, err) } - bytes, err := ioutil.ReadFile(filepath.Join("sketch6", "LineContinuations.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch6", "LineContinuations.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } @@ -337,11 +316,7 @@ func TestPrototypesAdderStringWithComment(t *testing.T) { NoError(t, err) } - bytes, err := ioutil.ReadFile(filepath.Join("sketch7", "StringWithComment.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch7", "StringWithComment.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } @@ -381,11 +356,7 @@ func TestPrototypesAdderSketchWithStruct(t *testing.T) { NoError(t, err) } - bytes, err := ioutil.ReadFile(filepath.Join("sketch8", "SketchWithStruct.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch8", "SketchWithStruct.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } @@ -428,11 +399,7 @@ func TestPrototypesAdderSketchWithConfig(t *testing.T) { require.Equal(t, "#include \n#line 1\n", context[constants.CTX_INCLUDE_SECTION].(string)) require.Equal(t, "void setup();\nvoid loop();\n#line 13\n", context[constants.CTX_PROTOTYPE_SECTION].(string)) - bytes, err := ioutil.ReadFile(filepath.Join("sketch_with_config", "sketch_with_config.preprocessed.txt")) - NoError(t, err) - - preprocessed := string(bytes) - + preprocessed := LoadAndInterpolate(t, filepath.Join("sketch_with_config", "sketch_with_config.preprocessed.txt"), context) require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1)) } diff --git a/src/arduino.cc/builder/test/sketch1/merged_sketch.txt b/src/arduino.cc/builder/test/sketch1/merged_sketch.txt index 598bc352..d8bf8d1f 100644 --- a/src/arduino.cc/builder/test/sketch1/merged_sketch.txt +++ b/src/arduino.cc/builder/test/sketch1/merged_sketch.txt @@ -1,4 +1,4 @@ -#line 1 "sketch.ino" +#line 1 "{{.sketch.MainFile.Name}}" void setup() { } @@ -6,9 +6,9 @@ void setup() { void loop() { } -#line 1 "old.pde" +#line 1 "{{(index .sketch.OtherSketchFiles 0).Name}}" -#line 1 "other.ino" +#line 1 "{{(index .sketch.OtherSketchFiles 1).Name}}" String hello() { return "world"; } diff --git a/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.preprocessed.txt b/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.preprocessed.txt index 8babb4e9..abce771c 100644 --- a/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "SketchWithIfDef.ino" +#line 1 "{{.sketch.MainFile.Name}}" #define DEBUG 1 #define DISABLED 0 diff --git a/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.resolved.directives.txt b/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.resolved.directives.txt index 90ef2728..1bcf249c 100644 --- a/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.resolved.directives.txt +++ b/src/arduino.cc/builder/test/sketch2/SketchWithIfDef.resolved.directives.txt @@ -1,4 +1,4 @@ -#line 1 "SketchWithIfDef.ino" +#line 1 "{{.sketch.MainFile.Name}}" #define DEBUG 1 #define DISABLED 0 diff --git a/src/arduino.cc/builder/test/sketch3/Baladuino.preprocessed.txt b/src/arduino.cc/builder/test/sketch3/Baladuino.preprocessed.txt index 72a9c90b..1e1ad868 100644 --- a/src/arduino.cc/builder/test/sketch3/Baladuino.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch3/Baladuino.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "Baladuino.ino" +#line 1 "{{.sketch.MainFile.Name}}" /* * The code is released under the GNU General Public License. * Developed by Kristian Lauszus, TKJ Electronics 2013 diff --git a/src/arduino.cc/builder/test/sketch4/CharWithEscapedDoubleQuote.preprocessed.txt b/src/arduino.cc/builder/test/sketch4/CharWithEscapedDoubleQuote.preprocessed.txt index 9dcecab4..1a177143 100644 --- a/src/arduino.cc/builder/test/sketch4/CharWithEscapedDoubleQuote.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch4/CharWithEscapedDoubleQuote.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "CharWithEscapedDoubleQuote.ino" +#line 1 "{{.sketch.MainFile.Name}}" #include // required to send and receive AT commands from the GPRS Shield #include // required for I2C communication with the RTC diff --git a/src/arduino.cc/builder/test/sketch5/IncludeBetweenMultilineComment.preprocessed.txt b/src/arduino.cc/builder/test/sketch5/IncludeBetweenMultilineComment.preprocessed.txt index bb969776..926fcf40 100644 --- a/src/arduino.cc/builder/test/sketch5/IncludeBetweenMultilineComment.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch5/IncludeBetweenMultilineComment.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "IncludeBetweenMultilineComment.ino" +#line 1 "{{.sketch.MainFile.Name}}" #include /* #include diff --git a/src/arduino.cc/builder/test/sketch6/LineContinuations.preprocessed.txt b/src/arduino.cc/builder/test/sketch6/LineContinuations.preprocessed.txt index 9b967f53..eb2e02be 100644 --- a/src/arduino.cc/builder/test/sketch6/LineContinuations.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch6/LineContinuations.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "LineContinuations.ino" +#line 1 "{{.sketch.MainFile.Name}}" const char *foo = "\ hello \ world\n"; diff --git a/src/arduino.cc/builder/test/sketch7/StringWithComment.preprocessed.txt b/src/arduino.cc/builder/test/sketch7/StringWithComment.preprocessed.txt index 19e21b51..b524f0ca 100644 --- a/src/arduino.cc/builder/test/sketch7/StringWithComment.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch7/StringWithComment.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "StringWithComment.ino" +#line 1 "{{.sketch.MainFile.Name}}" void setup(); void loop(); #line 1 diff --git a/src/arduino.cc/builder/test/sketch8/SketchWithStruct.preprocessed.txt b/src/arduino.cc/builder/test/sketch8/SketchWithStruct.preprocessed.txt index 8e6136c7..4ab8c926 100644 --- a/src/arduino.cc/builder/test/sketch8/SketchWithStruct.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch8/SketchWithStruct.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "SketchWithStruct.ino" +#line 1 "{{.sketch.MainFile.Name}}" /* START CODE */ struct A_NEW_TYPE { diff --git a/src/arduino.cc/builder/test/sketch_source_merger_test.go b/src/arduino.cc/builder/test/sketch_source_merger_test.go index a3f36457..7e99a34f 100644 --- a/src/arduino.cc/builder/test/sketch_source_merger_test.go +++ b/src/arduino.cc/builder/test/sketch_source_merger_test.go @@ -34,12 +34,12 @@ import ( "arduino.cc/builder/constants" "arduino.cc/builder/types" "github.com/stretchr/testify/require" - "io/ioutil" "path/filepath" "strings" "testing" ) + func TestMergeSketch(t *testing.T) { context := make(map[string]interface{}) context[constants.CTX_SKETCH_LOCATION] = filepath.Join("sketch1", "sketch.ino") @@ -57,9 +57,6 @@ func TestMergeSketch(t *testing.T) { source := context[constants.CTX_SOURCE].(string) - bytes, err1 := ioutil.ReadFile(filepath.Join("sketch1", "merged_sketch.txt")) - NoError(t, err1) - - expected_source := string(bytes) + expected_source := LoadAndInterpolate(t, filepath.Join("sketch1", "merged_sketch.txt"), context) require.Equal(t, expected_source, strings.Replace(source, "\r\n", "\n", -1)) } diff --git a/src/arduino.cc/builder/test/sketch_with_config/sketch_with_config.preprocessed.txt b/src/arduino.cc/builder/test/sketch_with_config/sketch_with_config.preprocessed.txt index 700da6cf..fd68cb5c 100644 --- a/src/arduino.cc/builder/test/sketch_with_config/sketch_with_config.preprocessed.txt +++ b/src/arduino.cc/builder/test/sketch_with_config/sketch_with_config.preprocessed.txt @@ -1,6 +1,6 @@ #include #line 1 -#line 1 "sketch_with_config.ino" +#line 1 "{{.sketch.MainFile.Name}}" #include "config.h" #ifdef DEBUG