From 241e5bb8a26abfcb7702b90320a5d0d1f31749b7 Mon Sep 17 00:00:00 2001 From: Sebastian Legarraga <64795732+slegarraga@users.noreply.github.com> Date: Tue, 2 Jun 2026 21:34:43 -0400 Subject: [PATCH] fix(formatters): render warnings in markdown output The markdown formatter filtered results by `failSeverity`, so with the default `failSeverity` of `error` it never rendered warnings, ignoring the absence of `--display-only-failures`. Result filtering for that flag already happens in the CLI before formatting, and the other formatters render every result they receive. Drop the redundant filter. Closes #2928 --- packages/formatters/src/__tests__/markdown.test.ts | 12 ++++++++++++ packages/formatters/src/markdown.ts | 6 ++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/formatters/src/__tests__/markdown.test.ts b/packages/formatters/src/__tests__/markdown.test.ts index 00036dd72..63fcfb19f 100644 --- a/packages/formatters/src/__tests__/markdown.test.ts +++ b/packages/formatters/src/__tests__/markdown.test.ts @@ -126,4 +126,16 @@ describe('Markdown formatter', () => { expect(normalizedMd).toEqual(normalizedExpectedMd); }); + + test('renders warnings regardless of failSeverity (#2928)', () => { + const CRLF = '\r\n'; + // failSeverity defaults to "error"; warnings must still be rendered, since + // display-only-failures filtering already happens in the CLI before formatting. + const md = markdown(results, { failSeverity: DiagnosticSeverity.Error }, context); + + const normalizedMd = md.replace(new RegExp(CRLF, 'g'), '\n').trim(); + const normalizedExpectedMd = expectedMd.replace(new RegExp(CRLF, 'g'), '\n').trim(); + + expect(normalizedMd).toEqual(normalizedExpectedMd); + }); }); diff --git a/packages/formatters/src/markdown.ts b/packages/formatters/src/markdown.ts index cea57f6ed..56244de08 100644 --- a/packages/formatters/src/markdown.ts +++ b/packages/formatters/src/markdown.ts @@ -5,7 +5,7 @@ import { DiagnosticSeverity } from '@stoplight/types'; import markdownEscape from 'markdown-escape'; import { getRuleDocumentationUrl } from './utils/getDocumentationUrl'; -export const markdown: Formatter = (results, { failSeverity }, ctx?: FormatterContext) => { +export const markdown: Formatter = (results, _options, ctx?: FormatterContext) => { const groupedResults = groupBySource(results); const lines: string[][] = []; @@ -13,9 +13,7 @@ export const markdown: Formatter = (results, { failSeverity }, ctx?: FormatterCo validationResults.sort((a, b) => a.range.start.line - b.range.start.line); if (validationResults.length > 0) { - const filteredValidationResults = validationResults.filter(result => result.severity <= failSeverity); - - for (const result of filteredValidationResults) { + for (const result of validationResults) { const ruleDocumentationUrl = getRuleDocumentationUrl(result.code, ctx); const codeWithOptionalLink = ruleDocumentationUrl != null