diff --git a/internal/result/result.go b/internal/result/result.go index e8923df7..2a3b87c7 100644 --- a/internal/result/result.go +++ b/internal/result/result.go @@ -101,8 +101,6 @@ func (results *Type) Record(lintedProject project.Type, ruleConfiguration ruleco panic(fmt.Errorf("Error while determining rule level: %v", err)) } - summaryText := fmt.Sprintf("Rule %s result: %s", ruleConfiguration.ID, ruleResult) - ruleMessage := "" if ruleResult == ruleresult.Fail { ruleMessage = message(ruleConfiguration.MessageTemplate, ruleOutput) @@ -112,9 +110,18 @@ func (results *Type) Record(lintedProject project.Type, ruleConfiguration ruleco ruleMessage = ruleOutput } - // Add explanation of rule result if present. - if ruleMessage != "" { - summaryText += fmt.Sprintf("\n%s: %s", ruleLevel, ruleMessage) + summaryText := "" + if configuration.Verbose() { + summaryText = fmt.Sprintf("Rule %s result: %s", ruleConfiguration.ID, ruleResult) + // Add explanation of rule result if present. + if ruleMessage != "" { + summaryText += fmt.Sprintf("\n%s: %s", ruleLevel, ruleMessage) + } + summaryText += "\n" + } else { + if ruleResult == ruleresult.Fail { + summaryText = fmt.Sprintf("%s: %s (Rule %s)\n", ruleLevel, ruleMessage, ruleConfiguration.ID) + } } reportExists, projectReportIndex := results.getProjectReportIndex(lintedProject.Path) diff --git a/internal/result/result_test.go b/internal/result/result_test.go index 220e62c2..e79c4625 100644 --- a/internal/result/result_test.go +++ b/internal/result/result_test.go @@ -74,12 +74,22 @@ func TestRecord(t *testing.T) { results.Initialize() ruleConfiguration := ruleconfiguration.Configurations()[0] ruleOutput := "foo" + flags.Set("verbose", "true") + require.Nil(t, configuration.Initialize(flags, projectPaths)) summaryText := results.Record(lintedProject, ruleConfiguration, ruleresult.Fail, ruleOutput) - assert.Equal(t, fmt.Sprintf("Rule %s result: %s\n%s: %s", ruleConfiguration.ID, ruleresult.Fail, rulelevel.Error, message(ruleConfiguration.MessageTemplate, ruleOutput)), summaryText) + assert.Equal(t, fmt.Sprintf("Rule %s result: %s\n%s: %s\n", ruleConfiguration.ID, ruleresult.Fail, rulelevel.Error, message(ruleConfiguration.MessageTemplate, ruleOutput)), summaryText) + summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.NotRun, ruleOutput) + assert.Equal(t, fmt.Sprintf("Rule %s result: %s\n%s: %s\n", ruleConfiguration.ID, ruleresult.NotRun, rulelevel.Notice, ruleOutput), summaryText, "Non-fail result should not use message") + summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.Pass, "") + assert.Equal(t, fmt.Sprintf("Rule %s result: %s\n", ruleConfiguration.ID, ruleresult.Pass), summaryText, "Non-failure result with no rule function output should only use preface") + flags.Set("verbose", "false") + require.Nil(t, configuration.Initialize(flags, projectPaths)) + summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.Fail, ruleOutput) + assert.Equal(t, fmt.Sprintf("%s: %s (Rule %s)\n", rulelevel.Error, message(ruleConfiguration.MessageTemplate, ruleOutput), ruleConfiguration.ID), summaryText) summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.NotRun, ruleOutput) - assert.Equal(t, fmt.Sprintf("Rule %s result: %s\n%s: %s", ruleConfiguration.ID, ruleresult.NotRun, rulelevel.Notice, ruleOutput), summaryText, "Non-fail result should not use message") + assert.Equal(t, "", summaryText, "Non-fail result should not result in output in non-verbose mode") summaryText = results.Record(lintedProject, ruleConfiguration, ruleresult.Pass, "") - assert.Equal(t, "", "", summaryText, "Non-failure result with no rule function output should result in an empty summary") + assert.Equal(t, "", summaryText, "Non-fail result should not result in output in non-verbose mode") flags.Set("verbose", "true") require.Nil(t, configuration.Initialize(flags, projectPaths)) diff --git a/internal/rule/rule.go b/internal/rule/rule.go index f3f677d8..2bd6271a 100644 --- a/internal/rule/rule.go +++ b/internal/rule/rule.go @@ -26,7 +26,6 @@ import ( "github.com/arduino/arduino-lint/internal/result" "github.com/arduino/arduino-lint/internal/result/feedback" "github.com/arduino/arduino-lint/internal/rule/ruleconfiguration" - "github.com/arduino/arduino-lint/internal/rule/ruleresult" "github.com/sirupsen/logrus" ) @@ -52,9 +51,7 @@ func Runner(project project.Type) { ruleResult, ruleOutput := ruleConfiguration.RuleFunction() reportText := result.Results.Record(project, ruleConfiguration, ruleResult, ruleOutput) - if (ruleResult == ruleresult.Fail) || configuration.Verbose() { - feedback.Println(reportText) - } + feedback.Print(reportText) } } diff --git a/test/test_all.py b/test/test_all.py index 863a0be8..038572a1 100644 --- a/test/test_all.py +++ b/test/test_all.py @@ -181,7 +181,7 @@ def test_verbose(run_command): result = run_command(cmd=["--format", "text", project_path]) assert result.ok assert "result: pass" not in result.stdout - assert "result: fail" in result.stdout + assert "WARNING:" in result.stdout result = run_command(cmd=["--format", "text", "--verbose", project_path]) assert result.ok