From 43d385b8772a13277631b30318d309ec3080bcdc Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 12 Mar 2023 19:57:40 -0700 Subject: [PATCH 1/2] Improve test coverage of SS002 rule function Previously the test data for the unit tests of this function did not provide full coverage of all valid sketch filename formats. --- internal/rule/rulefunction/sketch_test.go | 2 +- .../sketches/AllowedCharactersInFilenames/1LeadingNumber.ino | 0 .../AllowedCharactersInFilenames.ino | 2 ++ .../sketches/AllowedCharactersInFilenames/Contains-Hyphen.ino | 0 .../sketches/AllowedCharactersInFilenames/Contains.Dot.ino | 0 .../sketches/AllowedCharactersInFilenames/ContainsNumber1.ino | 0 .../AllowedCharactersInFilenames/Contains_Underscore.ino | 0 7 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/1LeadingNumber.ino create mode 100644 internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/AllowedCharactersInFilenames.ino create mode 100644 internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains-Hyphen.ino create mode 100644 internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains.Dot.ino create mode 100644 internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/ContainsNumber1.ino create mode 100644 internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains_Underscore.ino diff --git a/internal/rule/rulefunction/sketch_test.go b/internal/rule/rulefunction/sketch_test.go index fa910d13..d873b0e0 100644 --- a/internal/rule/rulefunction/sketch_test.go +++ b/internal/rule/rulefunction/sketch_test.go @@ -75,7 +75,7 @@ func TestSketchNameMismatch(t *testing.T) { func TestProhibitedCharactersInSketchFileName(t *testing.T) { testTables := []sketchRuleFunctionTestTable{ {"Has prohibited characters", "ProhibitedCharactersInFileName", ruleresult.Fail, "^Prohibited CharactersInFileName.h$"}, - {"No prohibited characters", "Valid", ruleresult.Pass, ""}, + {"No prohibited characters", "AllowedCharactersInFilenames", ruleresult.Pass, ""}, } checkSketchRuleFunction(ProhibitedCharactersInSketchFileName, testTables, t) diff --git a/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/1LeadingNumber.ino b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/1LeadingNumber.ino new file mode 100644 index 00000000..e69de29b diff --git a/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/AllowedCharactersInFilenames.ino b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/AllowedCharactersInFilenames.ino new file mode 100644 index 00000000..660bdbcc --- /dev/null +++ b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/AllowedCharactersInFilenames.ino @@ -0,0 +1,2 @@ +void setup() {} +void loop() {} diff --git a/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains-Hyphen.ino b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains-Hyphen.ino new file mode 100644 index 00000000..e69de29b diff --git a/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains.Dot.ino b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains.Dot.ino new file mode 100644 index 00000000..e69de29b diff --git a/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/ContainsNumber1.ino b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/ContainsNumber1.ino new file mode 100644 index 00000000..e69de29b diff --git a/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains_Underscore.ino b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/Contains_Underscore.ino new file mode 100644 index 00000000..e69de29b From fa2d53eb47af0e74055fb4f0660c260563d0fbf7 Mon Sep 17 00:00:00 2001 From: per1234 Date: Sun, 12 Mar 2023 20:03:07 -0700 Subject: [PATCH 2/2] Allow leading underscore in sketch filenames The Arduino Sketch Specification defines the allowed format of sketch folder names and sketch code filenames. Arduino Lint's rule SS002 checks compliance with the specification. The Arduino Sketch Specification has been changed to allow a leading underscore in sketch folder names and sketch code filenames so the Arduino Lint rule code must be updated accordingly. --- internal/rule/rulefunction/rulefunction.go | 2 +- .../AllowedCharactersInFilenames/_LeadingUnderscore.ino | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/_LeadingUnderscore.ino diff --git a/internal/rule/rulefunction/rulefunction.go b/internal/rule/rulefunction/rulefunction.go index 9659b78e..aebd745b 100644 --- a/internal/rule/rulefunction/rulefunction.go +++ b/internal/rule/rulefunction/rulefunction.go @@ -105,7 +105,7 @@ func brokenOutputList(list []string) string { // validProjectPathBaseName checks whether the provided library folder or sketch filename contains prohibited characters. func validProjectPathBaseName(name string) bool { - baseNameRegexp := regexp.MustCompile("^[a-zA-Z0-9][a-zA-Z0-9_.-]*$") + baseNameRegexp := regexp.MustCompile("^[a-zA-Z0-9_][a-zA-Z0-9_.-]*$") return baseNameRegexp.MatchString(name) } diff --git a/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/_LeadingUnderscore.ino b/internal/rule/rulefunction/testdata/sketches/AllowedCharactersInFilenames/_LeadingUnderscore.ino new file mode 100644 index 00000000..e69de29b