Skip to content

Commit ff003ac

Browse files
committed
Sketch is fully copied in tmp when building
Should fix: arduino/Arduino#5186 Signed-off-by: Cristian Maglie <[email protected]>
1 parent d0ac261 commit ff003ac

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

src/arduino.cc/builder/sketch_loader.go

+1-8
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,11 @@ func collectAllSketchFiles(from string) ([]string, error) {
9292
// Source files in the root are compiled, non-recursively. This
9393
// is the only place where .ino files can be present.
9494
rootExtensions := func(ext string) bool { return MAIN_FILE_VALID_EXTENSIONS[ext] || ADDITIONAL_FILE_VALID_EXTENSIONS[ext] }
95-
err := utils.FindFilesInFolder(&filePaths, from, rootExtensions, false /* recurse */)
95+
err := utils.FindFilesInFolder(&filePaths, from, rootExtensions, true /* recurse */)
9696
if err != nil {
9797
return nil, i18n.WrapError(err)
9898
}
9999

100-
// The "src/" subdirectory of a sketch is compiled recursively
101-
// (but .ino files are *not* compiled)
102-
srcPath := filepath.Join(from, constants.SKETCH_FOLDER_SRC)
103-
if info, err := os.Stat(srcPath); err == nil && info.IsDir() {
104-
srcExtensions := func(ext string) bool { return ADDITIONAL_FILE_VALID_EXTENSIONS[ext] }
105-
err = utils.FindFilesInFolder(&filePaths, srcPath, srcExtensions, true /* recurse */)
106-
}
107100
return filePaths, i18n.WrapError(err)
108101
}
109102

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

+9-5
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@
3030
package test
3131

3232
import (
33+
"path/filepath"
34+
"testing"
35+
3336
"arduino.cc/builder"
3437
"arduino.cc/builder/types"
3538
"github.com/stretchr/testify/require"
36-
"path/filepath"
37-
"testing"
3839
)
3940

4041
func TestLoadSketchWithFolder(t *testing.T) {
@@ -122,9 +123,12 @@ func TestLoadSketchFromFolder(t *testing.T) {
122123

123124
require.Equal(t, 0, len(sketch.OtherSketchFiles))
124125

125-
require.Equal(t, 2, len(sketch.AdditionalFiles))
126-
require.Contains(t, sketch.AdditionalFiles[0].Name, "other.cpp")
127-
require.Contains(t, sketch.AdditionalFiles[1].Name, "other.h")
126+
require.Equal(t, 5, len(sketch.AdditionalFiles))
127+
require.Contains(t, sketch.AdditionalFiles[0].Name, "sketch_with_subfolders/src/subfolder/other.cpp")
128+
require.Contains(t, sketch.AdditionalFiles[1].Name, "sketch_with_subfolders/src/subfolder/other.h")
129+
require.Contains(t, sketch.AdditionalFiles[2].Name, "sketch_with_subfolders/subfolder/dont_load_me.cpp")
130+
require.Contains(t, sketch.AdditionalFiles[3].Name, "sketch_with_subfolders/subfolder/other.cpp")
131+
require.Contains(t, sketch.AdditionalFiles[4].Name, "sketch_with_subfolders/subfolder/other.h")
128132
}
129133

130134
func TestLoadSketchWithBackup(t *testing.T) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include <Arduino.h> // Arduino 1.0
2+
3+
#include "other.h"
4+
5+
MyClass::MyClass() {
6+
}
7+
8+
void MyClass::init ( Stream *stream ) {
9+
controllerStream = stream;
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#ifndef other__h
2+
#define other__h
3+
4+
class MyClass {
5+
public:
6+
MyClass();
7+
void init ( Stream *controllerStream );
8+
9+
private:
10+
Stream *controllerStream;
11+
};
12+
#endif

0 commit comments

Comments
 (0)