Skip to content

Commit 89e7a01

Browse files
committed
Merge pull request #16 from matthijskooijman/absolute-line
Use absolute paths in #line directives generated
2 parents e3104f5 + b66e87d commit 89e7a01

15 files changed

+37
-65
lines changed

Diff for: src/arduino.cc/builder/sketch_source_merger.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ package builder
3232
import (
3333
"arduino.cc/builder/constants"
3434
"arduino.cc/builder/types"
35-
"path/filepath"
3635
)
3736

3837
type SketchSourceMerger struct{}
@@ -52,7 +51,7 @@ func (s *SketchSourceMerger) Run(context map[string]interface{}) error {
5251
}
5352

5453
func addPreprocLine(sketch *types.SketchFile) string {
55-
source := "#line 1 \"" + filepath.Base(sketch.Name) + "\"\n"
54+
source := "#line 1 \"" + sketch.Name + "\"\n"
5655
source += sketch.Source
5756
source += "\n"
5857

Diff for: src/arduino.cc/builder/test/coan_runner_test.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
"arduino.cc/builder/constants"
3535
"arduino.cc/builder/types"
3636
"github.com/stretchr/testify/require"
37-
"io/ioutil"
3837
"os"
3938
"path/filepath"
4039
"strings"
@@ -68,10 +67,7 @@ func TestCoanRunner(t *testing.T) {
6867
NoError(t, err)
6968
}
7069

71-
bytes, err1 := ioutil.ReadFile(filepath.Join("sketch2", "SketchWithIfDef.resolved.directives.txt"))
72-
NoError(t, err1)
73-
expectedSource := string(bytes)
74-
70+
expectedSource := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.resolved.directives.txt"), context)
7571
require.Equal(t, expectedSource, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
7672

7773
}

Diff for: src/arduino.cc/builder/test/helper.go

+13
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,21 @@ import (
3838
"io/ioutil"
3939
"path/filepath"
4040
"testing"
41+
"text/template"
42+
"bytes"
4143
)
4244

45+
func LoadAndInterpolate(t *testing.T, filename string, context map[string]interface{}) string {
46+
tpl, err := template.ParseFiles(filename)
47+
NoError(t, err)
48+
49+
var buf bytes.Buffer
50+
err = tpl.Execute(&buf, context)
51+
NoError(t, err)
52+
53+
return buf.String()
54+
}
55+
4356
func Abs(t *testing.T, rel string) string {
4457
toolPath, err := filepath.Abs(rel)
4558
NoError(t, err)

Diff for: src/arduino.cc/builder/test/prototypes_adder_test.go

+8-41
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434
"arduino.cc/builder/constants"
3535
"arduino.cc/builder/types"
3636
"github.com/stretchr/testify/require"
37-
"io/ioutil"
3837
"os"
3938
"path/filepath"
4039
"strings"
@@ -117,11 +116,7 @@ func TestPrototypesAdderSketchWithIfDef(t *testing.T) {
117116
NoError(t, err)
118117
}
119118

120-
bytes, err := ioutil.ReadFile(filepath.Join("sketch2", "SketchWithIfDef.preprocessed.txt"))
121-
NoError(t, err)
122-
123-
preprocessed := string(bytes)
124-
119+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch2", "SketchWithIfDef.preprocessed.txt"), context)
125120
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
126121
}
127122

@@ -161,11 +156,7 @@ func TestPrototypesAdderBaladuino(t *testing.T) {
161156
NoError(t, err)
162157
}
163158

164-
bytes, err := ioutil.ReadFile(filepath.Join("sketch3", "Baladuino.preprocessed.txt"))
165-
NoError(t, err)
166-
167-
preprocessed := string(bytes)
168-
159+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch3", "Baladuino.preprocessed.txt"), context)
169160
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
170161
}
171162

@@ -205,11 +196,7 @@ func TestPrototypesAdderCharWithEscapedDoubleQuote(t *testing.T) {
205196
NoError(t, err)
206197
}
207198

208-
bytes, err := ioutil.ReadFile(filepath.Join("sketch4", "CharWithEscapedDoubleQuote.preprocessed.txt"))
209-
NoError(t, err)
210-
211-
preprocessed := string(bytes)
212-
199+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch4", "CharWithEscapedDoubleQuote.preprocessed.txt"), context)
213200
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
214201
}
215202

@@ -249,11 +236,7 @@ func TestPrototypesAdderIncludeBetweenMultilineComment(t *testing.T) {
249236
NoError(t, err)
250237
}
251238

252-
bytes, err := ioutil.ReadFile(filepath.Join("sketch5", "IncludeBetweenMultilineComment.preprocessed.txt"))
253-
NoError(t, err)
254-
255-
preprocessed := string(bytes)
256-
239+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch5", "IncludeBetweenMultilineComment.preprocessed.txt"), context)
257240
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
258241
}
259242

@@ -293,11 +276,7 @@ func TestPrototypesAdderLineContinuations(t *testing.T) {
293276
NoError(t, err)
294277
}
295278

296-
bytes, err := ioutil.ReadFile(filepath.Join("sketch6", "LineContinuations.preprocessed.txt"))
297-
NoError(t, err)
298-
299-
preprocessed := string(bytes)
300-
279+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch6", "LineContinuations.preprocessed.txt"), context)
301280
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
302281
}
303282

@@ -337,11 +316,7 @@ func TestPrototypesAdderStringWithComment(t *testing.T) {
337316
NoError(t, err)
338317
}
339318

340-
bytes, err := ioutil.ReadFile(filepath.Join("sketch7", "StringWithComment.preprocessed.txt"))
341-
NoError(t, err)
342-
343-
preprocessed := string(bytes)
344-
319+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch7", "StringWithComment.preprocessed.txt"), context)
345320
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
346321
}
347322

@@ -381,11 +356,7 @@ func TestPrototypesAdderSketchWithStruct(t *testing.T) {
381356
NoError(t, err)
382357
}
383358

384-
bytes, err := ioutil.ReadFile(filepath.Join("sketch8", "SketchWithStruct.preprocessed.txt"))
385-
NoError(t, err)
386-
387-
preprocessed := string(bytes)
388-
359+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch8", "SketchWithStruct.preprocessed.txt"), context)
389360
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
390361
}
391362

@@ -428,11 +399,7 @@ func TestPrototypesAdderSketchWithConfig(t *testing.T) {
428399
require.Equal(t, "#include <Arduino.h>\n#line 1\n", context[constants.CTX_INCLUDE_SECTION].(string))
429400
require.Equal(t, "void setup();\nvoid loop();\n#line 13\n", context[constants.CTX_PROTOTYPE_SECTION].(string))
430401

431-
bytes, err := ioutil.ReadFile(filepath.Join("sketch_with_config", "sketch_with_config.preprocessed.txt"))
432-
NoError(t, err)
433-
434-
preprocessed := string(bytes)
435-
402+
preprocessed := LoadAndInterpolate(t, filepath.Join("sketch_with_config", "sketch_with_config.preprocessed.txt"), context)
436403
require.Equal(t, preprocessed, strings.Replace(context[constants.CTX_SOURCE].(string), "\r\n", "\n", -1))
437404
}
438405

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
#line 1 "sketch.ino"
1+
#line 1 "{{.sketch.MainFile.Name}}"
22
void setup() {
33

44
}
55

66
void loop() {
77

88
}
9-
#line 1 "old.pde"
9+
#line 1 "{{(index .sketch.OtherSketchFiles 0).Name}}"
1010

11-
#line 1 "other.ino"
11+
#line 1 "{{(index .sketch.OtherSketchFiles 1).Name}}"
1212
String hello() {
1313
return "world";
1414
}

Diff for: src/arduino.cc/builder/test/sketch2/SketchWithIfDef.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "SketchWithIfDef.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
#define DEBUG 1
55
#define DISABLED 0
66

Diff for: src/arduino.cc/builder/test/sketch2/SketchWithIfDef.resolved.directives.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#line 1 "SketchWithIfDef.ino"
1+
#line 1 "{{.sketch.MainFile.Name}}"
22
#define DEBUG 1
33
#define DISABLED 0
44

Diff for: src/arduino.cc/builder/test/sketch3/Baladuino.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "Baladuino.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
/*
55
* The code is released under the GNU General Public License.
66
* Developed by Kristian Lauszus, TKJ Electronics 2013

Diff for: src/arduino.cc/builder/test/sketch4/CharWithEscapedDoubleQuote.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "CharWithEscapedDoubleQuote.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
#include <SoftwareSerial.h> // required to send and receive AT commands from the GPRS Shield
55
#include <Wire.h> // required for I2C communication with the RTC
66

Diff for: src/arduino.cc/builder/test/sketch5/IncludeBetweenMultilineComment.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "IncludeBetweenMultilineComment.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
#include <CapacitiveSensor.h>
55
/*
66
#include <WiFi.h>

Diff for: src/arduino.cc/builder/test/sketch6/LineContinuations.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "LineContinuations.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
const char *foo = "\
55
hello \
66
world\n";

Diff for: src/arduino.cc/builder/test/sketch7/StringWithComment.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "StringWithComment.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
void setup();
55
void loop();
66
#line 1

Diff for: src/arduino.cc/builder/test/sketch8/SketchWithStruct.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "SketchWithStruct.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
/* START CODE */
55

66
struct A_NEW_TYPE {

Diff for: src/arduino.cc/builder/test/sketch_source_merger_test.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ import (
3434
"arduino.cc/builder/constants"
3535
"arduino.cc/builder/types"
3636
"github.com/stretchr/testify/require"
37-
"io/ioutil"
3837
"path/filepath"
3938
"strings"
4039
"testing"
4140
)
4241

42+
4343
func TestMergeSketch(t *testing.T) {
4444
context := make(map[string]interface{})
4545
context[constants.CTX_SKETCH_LOCATION] = filepath.Join("sketch1", "sketch.ino")
@@ -57,9 +57,6 @@ func TestMergeSketch(t *testing.T) {
5757

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

60-
bytes, err1 := ioutil.ReadFile(filepath.Join("sketch1", "merged_sketch.txt"))
61-
NoError(t, err1)
62-
63-
expected_source := string(bytes)
60+
expected_source := LoadAndInterpolate(t, filepath.Join("sketch1", "merged_sketch.txt"), context)
6461
require.Equal(t, expected_source, strings.Replace(source, "\r\n", "\n", -1))
6562
}

Diff for: src/arduino.cc/builder/test/sketch_with_config/sketch_with_config.preprocessed.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
22
#line 1
3-
#line 1 "sketch_with_config.ino"
3+
#line 1 "{{.sketch.MainFile.Name}}"
44
#include "config.h"
55

66
#ifdef DEBUG

0 commit comments

Comments
 (0)