diff --git a/bundle/render/render_text_output.go b/bundle/render/render_text_output.go index 8223d387f..2a7f2214f 100644 --- a/bundle/render/render_text_output.go +++ b/bundle/render/render_text_output.go @@ -112,10 +112,12 @@ func buildTrailer(diags diag.Diagnostics) string { parts = append(parts, color.BlueString(pluralize(recommendations, "recommendation", "recommendations"))) } switch { - case len(parts) >= 2: + case len(parts) >= 3: first := strings.Join(parts[:len(parts)-1], ", ") last := parts[len(parts)-1] - return fmt.Sprintf("Found %s and %s", first, last) + return fmt.Sprintf("Found %s, and %s", first, last) + case len(parts) == 2: + return fmt.Sprintf("Found %s and %s", parts[0], parts[1]) case len(parts) == 1: return fmt.Sprintf("Found %s", parts[0]) default: diff --git a/bundle/render/render_text_output_test.go b/bundle/render/render_text_output_test.go index 8921f02f2..1a41fa01c 100644 --- a/bundle/render/render_text_output_test.go +++ b/bundle/render/render_text_output_test.go @@ -149,7 +149,40 @@ func TestRenderTextOutput(t *testing.T) { "Name: test-bundle\n" + "Target: test-target\n" + "\n" + - "Found 2 errors, 1 warning and 1 recommendation\n", + "Found 2 errors, 1 warning, and 1 recommendation\n", + }, + { + name: "bundle during 'load' and 1 error and 1 warning", + bundle: loadingBundle, + diags: diag.Diagnostics{ + diag.Diagnostic{ + Severity: diag.Error, + Summary: "error (1)", + Detail: "detail (1)", + Locations: []dyn.Location{{File: "foo.py", Line: 1, Column: 1}}, + }, + diag.Diagnostic{ + Severity: diag.Warning, + Summary: "warning (2)", + Detail: "detail (2)", + Locations: []dyn.Location{{File: "foo.py", Line: 2, Column: 1}}, + }, + }, + opts: RenderOptions{RenderSummaryTable: true}, + expected: "Error: error (1)\n" + + " in foo.py:1:1\n" + + "\n" + + "detail (1)\n" + + "\n" + + "Warning: warning (2)\n" + + " in foo.py:2:1\n" + + "\n" + + "detail (2)\n" + + "\n" + + "Name: test-bundle\n" + + "Target: test-target\n" + + "\n" + + "Found 1 error and 1 warning\n", }, { name: "bundle during 'load' and 1 errors, 2 warning and 2 recommendations with details", @@ -215,7 +248,7 @@ func TestRenderTextOutput(t *testing.T) { "Name: test-bundle\n" + "Target: test-target\n" + "\n" + - "Found 1 error, 2 warnings and 2 recommendations\n", + "Found 1 error, 2 warnings, and 2 recommendations\n", }, { name: "bundle during 'init'",