From 9a2f7fe8d72e0b3125a0944d87a2e0089ba5f6d1 Mon Sep 17 00:00:00 2001 From: per1234 Date: Wed, 17 Feb 2021 03:37:06 -0800 Subject: [PATCH 1/3] Make sketch filename matching rule case-sensitive The primary sketch file name must match the sketch folder exactly. Previously, the rule did not check for file name case matching on case-insensitive file systems. --- internal/rule/rulefunction/sketch.go | 21 ++++++++++++------- internal/rule/rulefunction/sketch_test.go | 3 ++- .../sketches/CaseMismatch/caseMismatch.ino | 2 ++ 3 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 internal/rule/rulefunction/testdata/sketches/CaseMismatch/caseMismatch.ino 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() {} From 83c70fdaf7c7201fe69abf5a14604eeb50b2a13b Mon Sep 17 00:00:00 2001 From: per1234 Date: Wed, 17 Feb 2021 03:53:08 -0800 Subject: [PATCH 2/3] Update golang.org/x/mod dependency version --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) 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..42da71c9 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= From 1f72538cdfc844354b727e3cf84112b63baa76fb Mon Sep 17 00:00:00 2001 From: per1234 Date: Wed, 17 Feb 2021 03:53:38 -0800 Subject: [PATCH 3/3] Run go mod tidy Remove unused dependencies from go.sum --- go.sum | 4 ---- 1 file changed, 4 deletions(-) diff --git a/go.sum b/go.sum index 42da71c9..4e09516e 100644 --- a/go.sum +++ b/go.sum @@ -1385,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=