Skip to content

Commit

Permalink
Add support for reporting with custom severity (#6444)
Browse files Browse the repository at this point in the history
  • Loading branch information
aaronccasanova committed Nov 9, 2022
1 parent 17cff27 commit 35c0cfa
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 7 deletions.
5 changes: 5 additions & 0 deletions .changeset/khaki-flowers-suffer.md
@@ -0,0 +1,5 @@
---
"stylelint": minor
---

Added: support for reporting with custom severity
72 changes: 72 additions & 0 deletions lib/utils/__tests__/report.test.js
Expand Up @@ -230,6 +230,78 @@ test("with quiet mode on and rule severity of 'error'", () => {
expect(v.result.warn).toHaveBeenCalledTimes(1);
});

test('with custom rule severity', () => {
const v = {
ruleName: 'foo',
severity: 'warning',
result: {
warn: jest.fn(),
stylelint: {
ruleSeverities: {
foo: 'error',
},
},
},
message: 'bar',
node: {
rangeBy: defaultRangeBy,
},
};

report(v);
const spyArgs = v.result.warn.mock.calls[0];

expect(spyArgs[0]).toBe('bar');
expect(spyArgs[1].severity).toBe('warning');
expect(spyArgs[1].node).toBe(v.node);
});

test("with quiet mode on and custom rule severity of 'error'", () => {
const v = {
ruleName: 'foo',
severity: 'error',
result: {
warn: jest.fn(),
stylelint: {
quiet: true,
ruleSeverities: {
foo: 'warning',
},
},
},
message: 'bar',
node: {
rangeBy: defaultRangeBy,
},
};

report(v);
expect(v.result.warn).toHaveBeenCalledTimes(1);
});

test("with quiet mode on and custom rule severity of 'warning'", () => {
const v = {
ruleName: 'foo',
severity: 'warning',
result: {
warn: jest.fn(),
stylelint: {
quiet: true,
ruleSeverities: {
foo: 'error',
},
},
},
message: 'bar',
node: {
rangeBy: defaultRangeBy,
},
};

report(v);
expect(v.result.warn).toHaveBeenCalledTimes(0);
});

test('with message function', () => {
const v = {
ruleName: 'foo',
Expand Down
16 changes: 9 additions & 7 deletions lib/utils/report.js
Expand Up @@ -15,16 +15,20 @@
* @type {typeof import('stylelint').utils.report}
*/
module.exports = function report(problem) {
const { ruleName, result, message, messageArgs, line, node, index, endIndex, word } = problem;
const { ruleName, result, message, messageArgs, line, node, index, endIndex, word, severity } =
problem;

result.stylelint = result.stylelint || {
ruleSeverities: {},
customMessages: {},
ruleMetadata: {},
};

const ruleSeverity =
severity || (result.stylelint.ruleSeverities && result.stylelint.ruleSeverities[ruleName]);

// In quiet mode, mere warnings are ignored
if (result.stylelint.quiet && result.stylelint.ruleSeverities[ruleName] !== 'error') {
if (result.stylelint.quiet && ruleSeverity !== 'error') {
return;
}

Expand Down Expand Up @@ -72,19 +76,17 @@ module.exports = function report(problem) {
}
}

const severity = result.stylelint.ruleSeverities && result.stylelint.ruleSeverities[ruleName];

if (!result.stylelint.stylelintError && severity === 'error') {
if (!result.stylelint.stylelintError && ruleSeverity === 'error') {
result.stylelint.stylelintError = true;
}

if (!result.stylelint.stylelintWarning && severity === 'warning') {
if (!result.stylelint.stylelintWarning && ruleSeverity === 'warning') {
result.stylelint.stylelintWarning = true;
}

/** @type {import('stylelint').WarningOptions} */
const warningProperties = {
severity,
severity: ruleSeverity,
rule: ruleName,
};

Expand Down
4 changes: 4 additions & 0 deletions types/stylelint/index.d.ts
Expand Up @@ -396,6 +396,10 @@ declare module 'stylelint' {
};
word?: string;
line?: number;
/**
* Optional severity override for the problem.
*/
severity?: Severity;
};

export type LonghandSubPropertiesOfShorthandProperties = ReadonlyMap<
Expand Down

0 comments on commit 35c0cfa

Please sign in to comment.