Skip to content

Commit a2eb033

Browse files
Use QuoteCppString in testcases
In some testcases, the generated output is checked, which contains #line directives with filenames. Previously, this compared against the filename with just backslashes escaped, but this would be incorrect when there are quotes in the filename. Since the previous commit, the arduino-builder code itself uses a new `utils.QuoteCppString` function to apply escaping, so this applies that same escaping. Part of the changes modify the test code directly, part of the changes replace the `EscapeBackSlashes` "function" that was used in interpolating some text files with a call to QuoteCppString instead. Note that QuoteCppString already adds quotes around its result, so those are removed from the places where this function is called. Signed-off-by: Matthijs Kooijman <[email protected]>
1 parent 5617f10 commit a2eb033

14 files changed

+124
-125
lines changed

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

+2-4
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,20 @@ package test
3333
import (
3434
"arduino.cc/builder/constants"
3535
"arduino.cc/builder/types"
36+
"arduino.cc/builder/utils"
3637
"bytes"
3738
"fmt"
3839
"github.com/go-errors/errors"
3940
"github.com/stretchr/testify/assert"
4041
"io/ioutil"
4142
"path/filepath"
42-
"strings"
4343
"testing"
4444
"text/template"
4545
)
4646

4747
func LoadAndInterpolate(t *testing.T, filename string, ctx *types.Context) string {
4848
funcsMap := template.FuncMap{
49-
"EscapeBackSlashes": func(s string) string {
50-
return strings.Replace(s, "\\", "\\\\", -1)
51-
},
49+
"QuoteCppString": utils.QuoteCppString,
5250
}
5351

5452
tpl, err := template.New(filepath.Base(filename)).Funcs(funcsMap).ParseFiles(filename)

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

+37-36
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
44
void setup() {
55

66
}
77

88
void loop() {
99

1010
}
11-
#line 1 "{{EscapeBackSlashes (index .sketch.OtherSketchFiles 0).Name}}"
11+
#line 1 {{QuoteCppString (index .sketch.OtherSketchFiles 0).Name}}
1212

13-
#line 1 "{{EscapeBackSlashes (index .sketch.OtherSketchFiles 1).Name}}"
13+
#line 1 {{QuoteCppString (index .sketch.OtherSketchFiles 1).Name}}
1414
String hello() {
1515
return "world";
1616
}

src/arduino.cc/builder/test/sketch2/SketchWithIfDef.preprocessed.txt

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

@@ -16,17 +16,17 @@ typedef int MyType;
1616

1717
#include "empty_2.h"
1818

19-
#line 16 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
19+
#line 16 {{QuoteCppString .sketch.MainFile.Name}}
2020
void setup();
21-
#line 21 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
21+
#line 21 {{QuoteCppString .sketch.MainFile.Name}}
2222
void loop();
23-
#line 33 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
23+
#line 33 {{QuoteCppString .sketch.MainFile.Name}}
2424
void debug();
25-
#line 44 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
25+
#line 44 {{QuoteCppString .sketch.MainFile.Name}}
2626
void disabledIsDefined();
27-
#line 48 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
27+
#line 48 {{QuoteCppString .sketch.MainFile.Name}}
2828
int useMyType(MyType type);
29-
#line 16 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
29+
#line 16 {{QuoteCppString .sketch.MainFile.Name}}
3030
void setup() {
3131
// put your setup code here, to run once:
3232

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

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

src/arduino.cc/builder/test/sketch3/Baladuino.preprocessed.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
44
/*
55
* The code is released under the GNU General Public License.
66
* Developed by Kristian Lauszus, TKJ Electronics 2013
@@ -88,11 +88,11 @@ WII Wii(&Btd); // The Wii library can communicate with Wiimotes and the Nunchuck
8888
// This can also be done using the Android or Processing application
8989
#endif
9090

91-
#line 88 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
91+
#line 88 {{QuoteCppString .sketch.MainFile.Name}}
9292
void setup();
93-
#line 204 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
93+
#line 204 {{QuoteCppString .sketch.MainFile.Name}}
9494
void loop();
95-
#line 88 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
95+
#line 88 {{QuoteCppString .sketch.MainFile.Name}}
9696
void setup() {
9797
/* Initialize UART */
9898
Serial.begin(115200);

src/arduino.cc/builder/test/sketch4/CharWithEscapedDoubleQuote.preprocessed.txt

+24-24
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .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

@@ -39,49 +39,49 @@ Code Exclusively for GPRS shield:
3939
// Default set of instructions for GPRS Shield power control
4040
//
4141

42-
#line 39 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
42+
#line 39 {{QuoteCppString .sketch.MainFile.Name}}
4343
void setPowerStateTo( int newState );
44-
#line 64 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
44+
#line 64 {{QuoteCppString .sketch.MainFile.Name}}
4545
int getPowerState();
46-
#line 75 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
46+
#line 75 {{QuoteCppString .sketch.MainFile.Name}}
4747
void powerUpOrDown();
48-
#line 90 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
48+
#line 90 {{QuoteCppString .sketch.MainFile.Name}}
4949
void clearBufferArray();
50-
#line 96 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
50+
#line 96 {{QuoteCppString .sketch.MainFile.Name}}
5151
void makeMissedCall( char num[] );
52-
#line 111 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
52+
#line 111 {{QuoteCppString .sketch.MainFile.Name}}
5353
void sendTextMessage( char number[], char messg[] );
54-
#line 129 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
54+
#line 129 {{QuoteCppString .sketch.MainFile.Name}}
5555
void analise(byte incoming[], int length);
56-
#line 179 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
56+
#line 179 {{QuoteCppString .sketch.MainFile.Name}}
5757
byte decToBcd( byte b );
58-
#line 184 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
58+
#line 184 {{QuoteCppString .sketch.MainFile.Name}}
5959
boolean getBit( byte addr, int pos );
60-
#line 190 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
60+
#line 190 {{QuoteCppString .sketch.MainFile.Name}}
6161
void setBit( byte addr, int pos, boolean newBit );
62-
#line 204 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
62+
#line 204 {{QuoteCppString .sketch.MainFile.Name}}
6363
byte getByte( byte addr );
64-
#line 213 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
64+
#line 213 {{QuoteCppString .sketch.MainFile.Name}}
6565
boolean getBytes( byte addr, int amount );
66-
#line 230 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
66+
#line 230 {{QuoteCppString .sketch.MainFile.Name}}
6767
void setByte( byte addr, byte newByte );
68-
#line 235 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
68+
#line 235 {{QuoteCppString .sketch.MainFile.Name}}
6969
void setBytes( byte addr, byte newBytes[], int amount );
70-
#line 244 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
70+
#line 244 {{QuoteCppString .sketch.MainFile.Name}}
7171
void getTime();
72-
#line 260 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
72+
#line 260 {{QuoteCppString .sketch.MainFile.Name}}
7373
void setTime( byte newTime[ 7 ] );
74-
#line 267 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
74+
#line 267 {{QuoteCppString .sketch.MainFile.Name}}
7575
void getRTCTemperature();
76-
#line 277 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
76+
#line 277 {{QuoteCppString .sketch.MainFile.Name}}
7777
void gprsListen();
78-
#line 294 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
78+
#line 294 {{QuoteCppString .sketch.MainFile.Name}}
7979
void printTime();
80-
#line 317 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
80+
#line 317 {{QuoteCppString .sketch.MainFile.Name}}
8181
void setup();
82-
#line 334 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
82+
#line 334 {{QuoteCppString .sketch.MainFile.Name}}
8383
void loop();
84-
#line 39 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
84+
#line 39 {{QuoteCppString .sketch.MainFile.Name}}
8585
void setPowerStateTo( int newState )
8686
{
8787
if( newState != 1 && newState != 0 ) { // tests for an invalid state. In this case no change is made to powerstate

src/arduino.cc/builder/test/sketch5/IncludeBetweenMultilineComment.preprocessed.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
44
#include <CapacitiveSensor.h>
55
/*
66
#include <WiFi.h>
77
*/
88
CapacitiveSensor cs_13_8 = CapacitiveSensor(13,8);
9-
#line 6 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
9+
#line 6 {{QuoteCppString .sketch.MainFile.Name}}
1010
void setup();
11-
#line 10 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
11+
#line 10 {{QuoteCppString .sketch.MainFile.Name}}
1212
void loop();
13-
#line 6 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
13+
#line 6 {{QuoteCppString .sketch.MainFile.Name}}
1414
void setup()
1515
{
1616
Serial.begin(9600);

src/arduino.cc/builder/test/sketch6/LineContinuations.preprocessed.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
44
const char *foo = "\
55
hello \
66
world\n";
77

88
//" delete this comment line and the IDE parser will crash
99

10-
#line 7 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
10+
#line 7 {{QuoteCppString .sketch.MainFile.Name}}
1111
void setup();
12-
#line 11 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
12+
#line 11 {{QuoteCppString .sketch.MainFile.Name}}
1313
void loop();
14-
#line 7 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
14+
#line 7 {{QuoteCppString .sketch.MainFile.Name}}
1515
void setup()
1616
{
1717
}

src/arduino.cc/builder/test/sketch7/StringWithComment.preprocessed.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
4-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
4+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
55
void setup();
6-
#line 10 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
6+
#line 10 {{QuoteCppString .sketch.MainFile.Name}}
77
void loop();
8-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
8+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
99
void setup() {
1010
// put your setup code here, to run once:
1111
// "comment with a double quote

src/arduino.cc/builder/test/sketch8/SketchWithStruct.preprocessed.txt

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

66
struct A_NEW_TYPE {
@@ -9,13 +9,13 @@ struct A_NEW_TYPE {
99
int c;
1010
} foo;
1111

12-
#line 9 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
12+
#line 9 {{QuoteCppString .sketch.MainFile.Name}}
1313
void setup();
14-
#line 13 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
14+
#line 13 {{QuoteCppString .sketch.MainFile.Name}}
1515
void loop();
16-
#line 17 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
16+
#line 17 {{QuoteCppString .sketch.MainFile.Name}}
1717
void dostuff (A_NEW_TYPE * bar);
18-
#line 9 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
18+
#line 9 {{QuoteCppString .sketch.MainFile.Name}}
1919
void setup() {
2020

2121
}

src/arduino.cc/builder/test/sketch_with_config/sketch_with_config.preprocessed.txt

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

66
#ifdef DEBUG
@@ -13,11 +13,11 @@
1313

1414
#include <Bridge.h>
1515

16-
#line 13 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
16+
#line 13 {{QuoteCppString .sketch.MainFile.Name}}
1717
void setup();
18-
#line 17 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
18+
#line 17 {{QuoteCppString .sketch.MainFile.Name}}
1919
void loop();
20-
#line 13 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
20+
#line 13 {{QuoteCppString .sketch.MainFile.Name}}
2121
void setup() {
2222

2323
}

src/arduino.cc/builder/test/sketch_with_ifdef/sketch.preprocessed.SAM.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
44
#if __SAM3X8E__
5-
#line 2 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
5+
#line 2 {{QuoteCppString .sketch.MainFile.Name}}
66
void ifBranch();
7-
#line 9 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
7+
#line 9 {{QuoteCppString .sketch.MainFile.Name}}
88
void f1();
9-
#line 10 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
9+
#line 10 {{QuoteCppString .sketch.MainFile.Name}}
1010
void f2();
11-
#line 12 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
11+
#line 12 {{QuoteCppString .sketch.MainFile.Name}}
1212
void setup();
13-
#line 14 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
13+
#line 14 {{QuoteCppString .sketch.MainFile.Name}}
1414
void loop();
15-
#line 2 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
15+
#line 2 {{QuoteCppString .sketch.MainFile.Name}}
1616
void ifBranch() {
1717
}
1818
#else

src/arduino.cc/builder/test/sketch_with_ifdef/sketch.preprocessed.txt

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
#include <Arduino.h>
2-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
3-
#line 1 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
2+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
3+
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
44
#if __SAM3X8E__
55
void ifBranch() {
66
}
77
#else
8-
#line 5 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
8+
#line 5 {{QuoteCppString .sketch.MainFile.Name}}
99
void elseBranch();
10-
#line 9 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
10+
#line 9 {{QuoteCppString .sketch.MainFile.Name}}
1111
void f1();
12-
#line 10 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
12+
#line 10 {{QuoteCppString .sketch.MainFile.Name}}
1313
void f2();
14-
#line 12 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
14+
#line 12 {{QuoteCppString .sketch.MainFile.Name}}
1515
void setup();
16-
#line 14 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
16+
#line 14 {{QuoteCppString .sketch.MainFile.Name}}
1717
void loop();
18-
#line 5 "{{EscapeBackSlashes .sketch.MainFile.Name}}"
18+
#line 5 {{QuoteCppString .sketch.MainFile.Name}}
1919
void elseBranch() {
2020
}
2121
#endif

0 commit comments

Comments
 (0)