Skip to content

Commit efd06bc

Browse files
Test include detection with subfolders
This verifies that: - Source files inside the src/ subfolder of a sketch are subject to include detection. - Header files included by the main sketch are subject to include detection. - Source files in other subfolders are *not* subject to include detection. This commit adds four dummy libraries, "testlib1" to "testlib4" that only contain an empty header file. These can be used to test whether an include leads to the correct library being included, without running into other unexpected issues when using real libraries (like one library including another, or not all libraries being available for all boards, etc.). Signed-off-by: Matthijs Kooijman <[email protected]>
1 parent 3eed66c commit efd06bc

File tree

11 files changed

+54
-6
lines changed

11 files changed

+54
-6
lines changed

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

+42
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
"path/filepath"
3838
"sort"
3939
"testing"
40+
"fmt"
4041
)
4142

4243
func TestIncludesToIncludeFolders(t *testing.T) {
@@ -298,3 +299,44 @@ func TestIncludesToIncludeFoldersDuplicateLibs2(t *testing.T) {
298299
require.Equal(t, "USBHost", importedLibraries[0].Name)
299300
require.Equal(t, Abs(t, filepath.Join("libraries", "USBHost", "src")), importedLibraries[0].SrcFolder)
300301
}
302+
303+
func TestIncludesToIncludeFoldersSubfolders(t *testing.T) {
304+
DownloadCoresAndToolsAndLibraries(t)
305+
306+
ctx := &types.Context{
307+
HardwareFolders: []string{filepath.Join("..", "hardware"), "hardware", "downloaded_hardware"},
308+
ToolsFolders: []string{"downloaded_tools"},
309+
BuiltInLibrariesFolders: []string{"downloaded_libraries"},
310+
OtherLibrariesFolders: []string{"libraries"},
311+
SketchLocation: filepath.Join("sketch_with_subfolders", "sketch_with_subfolders.ino"),
312+
FQBN: "arduino:avr:leonardo",
313+
ArduinoAPIVersion: "10600",
314+
Verbose: true,
315+
}
316+
317+
buildPath := SetupBuildPath(t, ctx)
318+
defer os.RemoveAll(buildPath)
319+
320+
commands := []types.Command{
321+
322+
&builder.ContainerSetupHardwareToolsLibsSketchAndProps{},
323+
324+
&builder.ContainerMergeCopySketchFiles{},
325+
326+
&builder.ContainerFindIncludes{},
327+
}
328+
329+
for _, command := range commands {
330+
err := command.Run(ctx)
331+
NoError(t, err)
332+
}
333+
334+
importedLibraries := ctx.ImportedLibraries
335+
sort.Sort(ByLibraryName(importedLibraries))
336+
fmt.Println(importedLibraries)
337+
require.Equal(t, 3, len(importedLibraries))
338+
require.Equal(t, "testlib1", importedLibraries[0].Name)
339+
require.Equal(t, "testlib2", importedLibraries[1].Name)
340+
require.Equal(t, "testlib3", importedLibraries[2].Name)
341+
}
342+

Diff for: src/arduino.cc/builder/test/libraries/testlib1/testlib1.h

Whitespace-only changes.

Diff for: src/arduino.cc/builder/test/libraries/testlib2/testlib2.h

Whitespace-only changes.

Diff for: src/arduino.cc/builder/test/libraries/testlib3/testlib3.h

Whitespace-only changes.

Diff for: src/arduino.cc/builder/test/libraries/testlib4/testlib4.h

Whitespace-only changes.

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

+6-5
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@
3030
package test
3131

3232
import (
33+
"path/filepath"
34+
"sort"
35+
"testing"
36+
3337
"arduino.cc/builder"
3438
"arduino.cc/builder/constants"
3539
"arduino.cc/builder/types"
3640
"github.com/stretchr/testify/require"
37-
"path/filepath"
38-
"sort"
39-
"testing"
4041
)
4142

4243
func TestLoadLibrariesAVR(t *testing.T) {
@@ -68,7 +69,7 @@ func TestLoadLibrariesAVR(t *testing.T) {
6869
require.Equal(t, Abs(t, filepath.Join("libraries")), librariesFolders[2])
6970

7071
libraries := ctx.Libraries
71-
require.Equal(t, 20, len(libraries))
72+
require.Equal(t, 24, len(libraries))
7273

7374
sort.Sort(ByLibraryName(libraries))
7475

@@ -177,7 +178,7 @@ func TestLoadLibrariesSAM(t *testing.T) {
177178
require.Equal(t, Abs(t, filepath.Join("libraries")), librariesFolders[2])
178179

179180
libraries := ctx.Libraries
180-
require.Equal(t, 18, len(libraries))
181+
require.Equal(t, 22, len(libraries))
181182

182183
sort.Sort(ByLibraryName(libraries))
183184

Diff for: src/arduino.cc/builder/test/sketch_with_subfolders/sketch_with_subfolders.ino

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <testlib1.h>
12
#include "subfolder/other.h"
23
#include "src/subfolder/other.h"
34

Diff for: src/arduino.cc/builder/test/sketch_with_subfolders/src/subfolder/other.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include <Arduino.h> // Arduino 1.0
2+
#include <testlib2.h>
23

34
#include "other.h"
45

Diff for: src/arduino.cc/builder/test/sketch_with_subfolders/src/subfolder/other.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#ifndef other__h
22
#define other__h
3+
#include <testlib3.h>
34

45
class MyClass {
56
public:
@@ -9,4 +10,4 @@ class MyClass {
910
private:
1011
Stream *controllerStream;
1112
};
12-
#endif
13+
#endif
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
#include <testlib4.h>
12
#error "Whattya looking at?"
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
#include <testlib4.h>
12
#error "Whattya looking at?"

0 commit comments

Comments
 (0)