Skip to content

Commit d2ac5db

Browse files
committed
Add check for invalid sketch src subfolder name case
1 parent 1af089b commit d2ac5db

File tree

7 files changed

+44
-0
lines changed

7 files changed

+44
-0
lines changed

check/checkconfigurations/checkconfigurations.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,21 @@ var configurations = []Type{
10461046
ErrorModes: []checkmode.Type{checkmode.Default},
10471047
CheckFunction: checkfunctions.IncorrectExtrasFolderNameCase,
10481048
},
1049+
{
1050+
ProjectType: projecttype.Sketch,
1051+
Category: "structure",
1052+
Subcategory: "",
1053+
ID: "",
1054+
Brief: "incorrect src folder case",
1055+
Description: "",
1056+
MessageTemplate: "Incorrect src folder case. This will cause the source files under it to not be compiled on case-sensitive operating systems. See: https://arduino.github.io/arduino-cli/latest/sketch-specification/#src-subfolder",
1057+
DisableModes: nil,
1058+
EnableModes: []checkmode.Type{checkmode.Default},
1059+
InfoModes: nil,
1060+
WarningModes: []checkmode.Type{checkmode.Default},
1061+
ErrorModes: []checkmode.Type{checkmode.Strict},
1062+
CheckFunction: checkfunctions.IncorrectSketchSrcFolderNameCase,
1063+
},
10491064
{
10501065
ProjectType: projecttype.Sketch,
10511066
Category: "structure",

check/checkfunctions/sketch.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,22 @@ import (
2525
"github.com/arduino/arduino-check/project/sketch"
2626
)
2727

28+
// IncorrectSketchSrcFolderNameCase checks for incorrect case of src subfolder name in recursive format libraries.
29+
func IncorrectSketchSrcFolderNameCase() (result checkresult.Type, output string) {
30+
directoryListing, err := checkdata.ProjectPath().ReadDir()
31+
if err != nil {
32+
panic(err)
33+
}
34+
directoryListing.FilterDirs()
35+
36+
path, found := containsIncorrectPathBaseCase(directoryListing, "src")
37+
if found {
38+
return checkresult.Fail, path.String()
39+
}
40+
41+
return checkresult.Pass, ""
42+
}
43+
2844
// ProhibitedCharactersInSketchFileName checks for prohibited characters in the sketch file names.
2945
func ProhibitedCharactersInSketchFileName() (result checkresult.Type, output string) {
3046
directoryListing, _ := checkdata.ProjectPath().ReadDir()

check/checkfunctions/sketch_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ func checkSketchCheckFunction(checkFunction Type, testTables []sketchCheckFuncti
6060
}
6161
}
6262

63+
func TestIncorrectSketchSrcFolderNameCase(t *testing.T) {
64+
testTables := []sketchCheckFunctionTestTable{
65+
{"Incorrect case", "IncorrectSrcFolderNameCase", checkresult.Fail, ""},
66+
{"Correct case", "Valid", checkresult.Pass, ""},
67+
}
68+
69+
checkSketchCheckFunction(IncorrectSketchSrcFolderNameCase, testTables, t)
70+
}
71+
6372
func TestProhibitedCharactersInSketchFileName(t *testing.T) {
6473
testTables := []sketchCheckFunctionTestTable{
6574
{"Has prohibited characters", "ProhibitedCharactersInFileName", checkresult.Fail, "^Prohibited CharactersInFileName.h$"},
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
void setup() {}
2+
void loop() {}

check/checkfunctions/testdata/sketches/IncorrectSrcFolderNameCase/SRC/src.cpp

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
void setup() {}
2+
void loop() {}

check/checkfunctions/testdata/sketches/SrcSubfolder/src/src.cpp

Whitespace-only changes.

0 commit comments

Comments
 (0)