Skip to content

Commit a74c218

Browse files
committed
Return effective check level from checklevel.CheckLevel()
Previously, the level returned was for a failure result, regardless of the actual result of the check, with the effective check level adjusted according to the check result in the result package. The code is more maintainable and easier to understand if the check level is determined in a single location. The checklevel package is the logical place for that.
1 parent fa59ce0 commit a74c218

File tree

5 files changed

+26
-18
lines changed

5 files changed

+26
-18
lines changed

Diff for: check/checkconfigurations/checkconfigurations_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestConfigurationResolution(t *testing.T) {
3232
enabled, err := check.IsEnabled(checkConfiguration, map[checkmode.Type]bool{checkMode: true})
3333
assert.Nil(t, err, fmt.Sprintf("Enable configuration of check %s doesn't resolve for check mode %s", checkConfiguration.ID, checkMode))
3434
if err == nil && enabled {
35-
_, err := checklevel.CheckLevelForCheckModes(checkConfiguration, map[checkmode.Type]bool{checkMode: true})
35+
_, err := checklevel.FailCheckLevel(checkConfiguration, map[checkmode.Type]bool{checkMode: true})
3636
assert.Nil(t, err, fmt.Sprintf("Level configuration of check %s doesn't resolve for check mode %s", checkConfiguration.ID, checkMode))
3737
}
3838
}

Diff for: check/checklevel/checklevel.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121

2222
"github.com/arduino/arduino-check/check/checkconfigurations"
23+
"github.com/arduino/arduino-check/check/checkresult"
2324
"github.com/arduino/arduino-check/configuration"
2425
"github.com/arduino/arduino-check/configuration/checkmode"
2526
)
@@ -36,13 +37,17 @@ const (
3637
Notice // notice
3738
)
3839

39-
// CheckLevel determines the check level assigned to failure of the given check under the current tool configuration.
40-
func CheckLevel(checkConfiguration checkconfigurations.Type) (Type, error) {
40+
// CheckLevel determines the check level assigned to the given result of the given check under the current tool configuration.
41+
func CheckLevel(checkConfiguration checkconfigurations.Type, checkResult checkresult.Type) (Type, error) {
42+
if checkResult != checkresult.Fail {
43+
return Notice, nil // Level provided by FailCheckLevel() is only relevant for failure result.
44+
}
4145
configurationCheckModes := configuration.CheckModes(checkConfiguration.ProjectType)
42-
return CheckLevelForCheckModes(checkConfiguration, configurationCheckModes)
46+
return FailCheckLevel(checkConfiguration, configurationCheckModes)
4347
}
4448

45-
func CheckLevelForCheckModes(checkConfiguration checkconfigurations.Type, configurationCheckModes map[checkmode.Type]bool) (Type, error) {
49+
// FailCheckLevel determines the level of a failed check for the given check modes.
50+
func FailCheckLevel(checkConfiguration checkconfigurations.Type, configurationCheckModes map[checkmode.Type]bool) (Type, error) {
4651
for _, errorMode := range checkConfiguration.ErrorModes {
4752
if configurationCheckModes[errorMode] {
4853
return Error, nil

Diff for: check/checklevel/checklevel_test.go

+14-11
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"testing"
2020

2121
"github.com/arduino/arduino-check/check/checkconfigurations"
22+
"github.com/arduino/arduino-check/check/checkresult"
2223
"github.com/arduino/arduino-check/configuration"
2324
"github.com/arduino/arduino-check/configuration/checkmode"
2425
"github.com/arduino/arduino-check/util/test"
@@ -31,19 +32,21 @@ func TestCheckLevel(t *testing.T) {
3132
infoModes []checkmode.Type
3233
warningModes []checkmode.Type
3334
errorModes []checkmode.Type
35+
checkResult checkresult.Type
3436
libraryManagerSetting string
3537
permissiveSetting string
3638
expectedLevel Type
3739
errorAssertion assert.ErrorAssertionFunc
3840
}{
39-
{"Error", []checkmode.Type{}, []checkmode.Type{}, []checkmode.Type{checkmode.LibraryManagerSubmission}, "submit", "false", Error, assert.NoError},
40-
{"Warning", []checkmode.Type{}, []checkmode.Type{checkmode.LibraryManagerSubmission}, []checkmode.Type{}, "submit", "false", Warning, assert.NoError},
41-
{"Info", []checkmode.Type{checkmode.LibraryManagerSubmission}, []checkmode.Type{}, []checkmode.Type{}, "submit", "false", Info, assert.NoError},
42-
{"Default to Error", []checkmode.Type{}, []checkmode.Type{}, []checkmode.Type{checkmode.Default}, "submit", "false", Error, assert.NoError},
43-
{"Default to Warning", []checkmode.Type{}, []checkmode.Type{checkmode.Default}, []checkmode.Type{}, "submit", "false", Warning, assert.NoError},
44-
{"Default to Info", []checkmode.Type{checkmode.Default}, []checkmode.Type{}, []checkmode.Type{}, "submit", "false", Info, assert.NoError},
45-
{"Default override", []checkmode.Type{checkmode.Default}, []checkmode.Type{}, []checkmode.Type{checkmode.LibraryManagerSubmission}, "submit", "false", Error, assert.NoError},
46-
{"Unable to resolve", []checkmode.Type{}, []checkmode.Type{}, []checkmode.Type{}, "submit", "false", Info, assert.Error},
41+
{"Non-fail", []checkmode.Type{}, []checkmode.Type{}, []checkmode.Type{checkmode.LibraryManagerSubmission}, checkresult.Skip, "submit", "false", Notice, assert.NoError},
42+
{"Error", []checkmode.Type{}, []checkmode.Type{}, []checkmode.Type{checkmode.LibraryManagerSubmission}, checkresult.Fail, "submit", "false", Error, assert.NoError},
43+
{"Warning", []checkmode.Type{}, []checkmode.Type{checkmode.LibraryManagerSubmission}, []checkmode.Type{}, checkresult.Fail, "submit", "false", Warning, assert.NoError},
44+
{"Info", []checkmode.Type{checkmode.LibraryManagerSubmission}, []checkmode.Type{}, []checkmode.Type{}, checkresult.Fail, "submit", "false", Info, assert.NoError},
45+
{"Default to Error", []checkmode.Type{}, []checkmode.Type{}, []checkmode.Type{checkmode.Default}, checkresult.Fail, "submit", "false", Error, assert.NoError},
46+
{"Default to Warning", []checkmode.Type{}, []checkmode.Type{checkmode.Default}, []checkmode.Type{}, checkresult.Fail, "submit", "false", Warning, assert.NoError},
47+
{"Default to Info", []checkmode.Type{checkmode.Default}, []checkmode.Type{}, []checkmode.Type{}, checkresult.Fail, "submit", "false", Info, assert.NoError},
48+
{"Default override", []checkmode.Type{checkmode.Default}, []checkmode.Type{}, []checkmode.Type{checkmode.LibraryManagerSubmission}, checkresult.Fail, "submit", "false", Error, assert.NoError},
49+
{"Unable to resolve", []checkmode.Type{}, []checkmode.Type{}, []checkmode.Type{}, checkresult.Fail, "submit", "false", Info, assert.Error},
4750
}
4851

4952
flags := test.ConfigurationFlags()
@@ -60,10 +63,10 @@ func TestCheckLevel(t *testing.T) {
6063
ErrorModes: testTable.errorModes,
6164
}
6265

63-
level, err := CheckLevel(checkConfiguration)
64-
testTable.errorAssertion(t, err)
66+
level, err := CheckLevel(checkConfiguration, testTable.checkResult)
67+
testTable.errorAssertion(t, err, testTable.testName)
6568
if err == nil {
66-
assert.Equal(t, testTable.expectedLevel, level)
69+
assert.Equal(t, testTable.expectedLevel, level, testTable.testName)
6770
}
6871
}
6972
}

Diff for: result/result.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func (results *Type) Initialize() {
9494
func (results *Type) Record(checkedProject project.Type, checkConfiguration checkconfigurations.Type, checkResult checkresult.Type, checkOutput string) string {
9595
checkMessage := message(checkConfiguration.MessageTemplate, checkOutput)
9696

97-
checkLevel, err := checklevel.CheckLevel(checkConfiguration)
97+
checkLevel, err := checklevel.CheckLevel(checkConfiguration, checkResult)
9898
if err != nil {
9999
feedback.Errorf("Error while determining check level: %v", err)
100100
os.Exit(1)

Diff for: result/result_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func TestRecord(t *testing.T) {
9090
assert.Equal(t, checkConfiguration.Brief, checkReport.Brief)
9191
assert.Equal(t, checkConfiguration.Description, checkReport.Description)
9292
assert.Equal(t, checkResult.String(), checkReport.Result)
93-
checkLevel, _ := checklevel.CheckLevel(checkConfiguration)
93+
checkLevel, _ := checklevel.CheckLevel(checkConfiguration, checkResult)
9494
assert.Equal(t, checkLevel.String(), checkReport.Level)
9595
assert.Equal(t, message(checkConfiguration.MessageTemplate, checkOutput), checkReport.Message)
9696

0 commit comments

Comments
 (0)