diff --git a/go.mod b/go.mod index fe585e15..74c09cf5 100644 --- a/go.mod +++ b/go.mod @@ -48,7 +48,7 @@ require ( go.bug.st/relaxed-semver v0.0.0-20190922224835-391e10178d18 go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.14.0 // indirect golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 // indirect - golang.org/x/mod v0.4.0 // indirect + golang.org/x/mod v0.4.1 // indirect golang.org/x/net v0.0.0-20201209123823-ac852fbbde11 // indirect golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d // indirect golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf // indirect diff --git a/go.sum b/go.sum index 842fef1a..4e09516e 100644 --- a/go.sum +++ b/go.sum @@ -1193,6 +1193,8 @@ golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180406214816-61147c48b25b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180816102801-aaf60122140d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1383,10 +1385,6 @@ golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200203215610-ab391d50b528/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200308013534-11ec41452d41/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20201210181237-6d345e82f1d8 h1:Pg9rlomzMhg26WdvwSujvC1Pr2lxOfFfhnQ+/LQcjLw= -golang.org/x/tools v0.0.0-20201210181237-6d345e82f1d8/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58 h1:1Bs6RVeBFtLZ8Yi1Hk07DiOqzvwLD/4hln4iahvFlag= -golang.org/x/tools v0.0.0-20201211185031-d93e913c1a58/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201211192254-72fbef54948b h1:8fYBhX5ZQZtb7nVKo58TjndJwMM+cOB1xOnfjgH3uiY= golang.org/x/tools v0.0.0-20201211192254-72fbef54948b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/internal/rule/rulefunction/sketch.go b/internal/rule/rulefunction/sketch.go index a7dcc6fc..bb16a12b 100644 --- a/internal/rule/rulefunction/sketch.go +++ b/internal/rule/rulefunction/sketch.go @@ -28,15 +28,20 @@ import ( // SketchNameMismatch checks for mismatch between sketch folder name and primary file name. func SketchNameMismatch() (result ruleresult.Type, output string) { - for extension := range globals.MainFileValidExtensions { - validPrimarySketchFilePath := projectdata.ProjectPath().Join(projectdata.ProjectPath().Base() + extension) - exist, err := validPrimarySketchFilePath.ExistCheck() - if err != nil { - panic(err) - } + primarySketchFilePrefix := projectdata.ProjectPath().Base() - if exist { - return ruleresult.Pass, "" + directoryListing, err := projectdata.ProjectPath().ReadDir() + if err != nil { + panic(err) + } + directoryListing.FilterOutDirs() + + for _, filePath := range directoryListing { + for extension := range globals.MainFileValidExtensions { + if filePath.Base() == primarySketchFilePrefix+extension { + // There was a case-sensitive match (paths package's Exist() is not always case-sensitive, so can't be used here). + return ruleresult.Pass, "" + } } } diff --git a/internal/rule/rulefunction/sketch_test.go b/internal/rule/rulefunction/sketch_test.go index 3f8b1ef2..0a856534 100644 --- a/internal/rule/rulefunction/sketch_test.go +++ b/internal/rule/rulefunction/sketch_test.go @@ -64,7 +64,8 @@ func checkSketchRuleFunction(ruleFunction Type, testTables []sketchRuleFunctionT func TestSketchNameMismatch(t *testing.T) { testTables := []sketchRuleFunctionTestTable{ {"Valid", "Valid", ruleresult.Pass, ""}, - {"Mismatch", "NameMismatch", ruleresult.Fail, ""}, + {"Name Mismatch", "NameMismatch", ruleresult.Fail, ""}, + {"Case Mismatch", "CaseMismatch", ruleresult.Fail, ""}, } checkSketchRuleFunction(SketchNameMismatch, testTables, t) diff --git a/internal/rule/rulefunction/testdata/sketches/CaseMismatch/caseMismatch.ino b/internal/rule/rulefunction/testdata/sketches/CaseMismatch/caseMismatch.ino new file mode 100644 index 00000000..660bdbcc --- /dev/null +++ b/internal/rule/rulefunction/testdata/sketches/CaseMismatch/caseMismatch.ino @@ -0,0 +1,2 @@ +void setup() {} +void loop() {}