Skip to content

Commit 83d71c8

Browse files
Add support for .tpp and .ipp Sketch file extensions (#1316)
* added '.tpp' file ext to known list * Add support for .ipp Sketch files extension * Add tests for new .tpp and .ipp extensions suppport Co-authored-by: Silvano Cerza <[email protected]>
1 parent b780f9c commit 83d71c8

File tree

16 files changed

+118
-0
lines changed

16 files changed

+118
-0
lines changed

Diff for: arduino/builder/sketch_test.go

+32
Original file line numberDiff line numberDiff line change
@@ -289,3 +289,35 @@ func TestSketchWithMarkdownAsciidocJson(t *testing.T) {
289289
require.Equal(t, "foo.json", filepath.Base(sketch.RootFolderFiles[1].Path))
290290
require.Equal(t, "foo.md", filepath.Base(sketch.RootFolderFiles[2].Path))
291291
}
292+
293+
func TestSketchWithTppFile(t *testing.T) {
294+
sketchPath := filepath.Join("testdata", t.Name())
295+
mainFilePath := filepath.Join(sketchPath, t.Name()+".ino")
296+
297+
sketch, err := builder.SketchLoad(sketchPath, "")
298+
require.NotNil(t, sketch)
299+
require.NoError(t, err)
300+
require.Equal(t, sketchPath, sketch.LocationPath)
301+
require.Equal(t, mainFilePath, sketch.MainFile.Path)
302+
require.Len(t, sketch.OtherSketchFiles, 0)
303+
require.Len(t, sketch.AdditionalFiles, 1)
304+
require.Equal(t, "template.tpp", filepath.Base(sketch.AdditionalFiles[0].Path))
305+
require.Len(t, sketch.RootFolderFiles, 1)
306+
require.Equal(t, "template.tpp", filepath.Base(sketch.RootFolderFiles[0].Path))
307+
}
308+
309+
func TestSketchWithIppFile(t *testing.T) {
310+
sketchPath := filepath.Join("testdata", t.Name())
311+
mainFilePath := filepath.Join(sketchPath, t.Name()+".ino")
312+
313+
sketch, err := builder.SketchLoad(sketchPath, "")
314+
require.NotNil(t, sketch)
315+
require.NoError(t, err)
316+
require.Equal(t, sketchPath, sketch.LocationPath)
317+
require.Equal(t, mainFilePath, sketch.MainFile.Path)
318+
require.Len(t, sketch.OtherSketchFiles, 0)
319+
require.Len(t, sketch.AdditionalFiles, 1)
320+
require.Equal(t, "template.ipp", filepath.Base(sketch.AdditionalFiles[0].Path))
321+
require.Len(t, sketch.RootFolderFiles, 1)
322+
require.Equal(t, "template.ipp", filepath.Base(sketch.RootFolderFiles[0].Path))
323+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include "template.ipp"
2+
3+
void setup() {}
4+
void loop() {}

Diff for: arduino/builder/testdata/TestSketchWithIppFile/template.ipp

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include "template.tpp"
2+
3+
void setup() {}
4+
void loop() {}

Diff for: arduino/builder/testdata/TestSketchWithTppFile/template.tpp

Whitespace-only changes.

Diff for: arduino/globals/globals.go

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ var (
3939
".adoc": empty,
4040
".md": empty,
4141
".json": empty,
42+
".tpp": empty,
43+
".ipp": empty,
4244
}
4345

4446
// SourceFilesValidExtensions lists valid extensions for source files (no headers)

Diff for: arduino/sketch/sketch_test.go

+34
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,37 @@ func TestSketchWithMarkdownAsciidocJson(t *testing.T) {
138138
require.Equal(t, "foo.json", filepath.Base(sketch.RootFolderFiles[1].Path))
139139
require.Equal(t, "foo.md", filepath.Base(sketch.RootFolderFiles[2].Path))
140140
}
141+
142+
func TestSketchWithTppFile(t *testing.T) {
143+
sketchPath := paths.New("testdata", "SketchWithTppFile")
144+
mainFilePath := sketchPath.Join("SketchWithTppFile.ino").String()
145+
templateFile := sketchPath.Join("template.tpp").String()
146+
147+
sketch, err := New(sketchPath.String(), mainFilePath, "", []string{mainFilePath, templateFile})
148+
require.NotNil(t, sketch)
149+
require.NoError(t, err)
150+
require.Equal(t, sketchPath.String(), sketch.LocationPath)
151+
require.Equal(t, mainFilePath, sketch.MainFile.Path)
152+
require.Len(t, sketch.OtherSketchFiles, 0)
153+
require.Len(t, sketch.AdditionalFiles, 1)
154+
require.Equal(t, "template.tpp", filepath.Base(sketch.AdditionalFiles[0].Path))
155+
require.Len(t, sketch.RootFolderFiles, 1)
156+
require.Equal(t, "template.tpp", filepath.Base(sketch.RootFolderFiles[0].Path))
157+
}
158+
159+
func TestSketchWithIppFile(t *testing.T) {
160+
sketchPath := paths.New("testdata", "SketchWithIppFile")
161+
mainFilePath := sketchPath.Join("SketchWithIppFile.ino").String()
162+
templateFile := sketchPath.Join("template.ipp").String()
163+
164+
sketch, err := New(sketchPath.String(), mainFilePath, "", []string{mainFilePath, templateFile})
165+
require.NotNil(t, sketch)
166+
require.NoError(t, err)
167+
require.Equal(t, sketchPath.String(), sketch.LocationPath)
168+
require.Equal(t, mainFilePath, sketch.MainFile.Path)
169+
require.Len(t, sketch.OtherSketchFiles, 0)
170+
require.Len(t, sketch.AdditionalFiles, 1)
171+
require.Equal(t, "template.ipp", filepath.Base(sketch.AdditionalFiles[0].Path))
172+
require.Len(t, sketch.RootFolderFiles, 1)
173+
require.Equal(t, "template.ipp", filepath.Base(sketch.RootFolderFiles[0].Path))
174+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include "template.ipp"
2+
3+
void setup() {}
4+
void loop() {}

Diff for: arduino/sketch/testdata/SketchWithIppFile/template.ipp

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include "template.tpp"
2+
3+
void setup() {}
4+
void loop() {}

Diff for: arduino/sketch/testdata/SketchWithTppFile/template.tpp

Whitespace-only changes.

Diff for: test/test_compile.py

+26
Original file line numberDiff line numberDiff line change
@@ -1129,3 +1129,29 @@ def test_compile_with_esp8266_bundled_libraries(run_command, data_dir, copy_sket
11291129
f" Not used: {cli_installed_lib_path}",
11301130
]
11311131
assert "\n".join(expected_output) not in res.stdout
1132+
1133+
1134+
def test_compile_sketch_with_tpp_file_include(run_command, copy_sketch):
1135+
assert run_command("update")
1136+
1137+
# Download latest AVR
1138+
run_command("core install arduino:avr")
1139+
1140+
sketch_name = "sketch_with_tpp_file_include"
1141+
sketch_path = copy_sketch(sketch_name)
1142+
fqbn = "arduino:avr:uno"
1143+
1144+
assert run_command(f"compile -b {fqbn} {sketch_path} --verbose")
1145+
1146+
1147+
def test_compile_sketch_with_ipp_file_include(run_command, copy_sketch):
1148+
assert run_command("update")
1149+
1150+
# Download latest AVR
1151+
run_command("core install arduino:avr")
1152+
1153+
sketch_name = "sketch_with_ipp_file_include"
1154+
sketch_path = copy_sketch(sketch_name)
1155+
fqbn = "arduino:avr:uno"
1156+
1157+
assert run_command(f"compile -b {fqbn} {sketch_path} --verbose")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include "template.ipp"
2+
3+
void setup() {}
4+
void loop() {}

Diff for: test/testdata/sketch_with_ipp_file_include/template.ipp

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#include "template.tpp"
2+
3+
void setup() {}
4+
void loop() {}

Diff for: test/testdata/sketch_with_tpp_file_include/template.tpp

Whitespace-only changes.

0 commit comments

Comments
 (0)