Skip to content

Commit

Permalink
Process and log results from stylelint πŸ’‡β€β™€οΈ (#14)
Browse files Browse the repository at this point in the history
Process and log results from Stylelint πŸ’‡β€β™€οΈ
  • Loading branch information
01taylop authored Jul 22, 2024
1 parent 9b4c6a7 commit d80827e
Show file tree
Hide file tree
Showing 6 changed files with 368 additions and 73 deletions.
2 changes: 1 addition & 1 deletion jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const config: JestConfigWithTsJest = {
'src/**/*.ts',
// TODO: Write tests for these files when they are less likely to change
'!src/index.ts',
'!src/linters/(index|stylelint).ts',
'!src/linters/index.ts',
],
coverageDirectory: 'coverage',
coverageThreshold: {
Expand Down
1 change: 0 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ const runLintPilot = ({ filePatterns, title, watch }: RunLintPilot) => {
if (watch) {
colourLog.info('Watching for changes...')
} else {
console.log()
process.exit(exitCode)
}
})
Expand Down
109 changes: 70 additions & 39 deletions src/linters/__tests__/eslint.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ describe('eslint', () => {
}
})

it('resolves with results and a summary when eslint successfully lints (no files)', async () => {
it('returns results and a summary when eslint successfully lints (no files)', async () => {
const lintResults: Array<ESLint.LintResult> = []

lintFilesMock.mockImplementationOnce(() => lintResults)

expect(await eslintLib.lintFiles(testFiles)).toStrictEqual({
expect(await eslintLib.lintFiles([])).toStrictEqual({
results: {},
summary: {
deprecatedRules: [],
Expand All @@ -69,7 +69,7 @@ describe('eslint', () => {
})
})

it('resolves with results and a summary when eslint successfully lints (no errors)', async () => {
it('returns results and a summary when eslint successfully lints (no errors)', async () => {
const lintResults: Array<ESLint.LintResult> = [{
errorCount: 0,
fatalErrorCount: 0,
Expand Down Expand Up @@ -98,120 +98,151 @@ describe('eslint', () => {
})
})

it('resolves with results and a summary when eslint successfully lints (with errors, warnings, and deprecations)', async () => {
const eslintResult: Array<ESLint.LintResult> = [{
errorCount: 0,
it('returns results and a summary when eslint successfully lints (with errors, warnings, and deprecations)', async () => {
const commonResult = {
fatalErrorCount: 0,
suppressedMessages: [],
}

const lintResults: Array<ESLint.LintResult> = [{
// No errors or warnings
...commonResult,
errorCount: 0,
filePath: `${process.cwd()}/constants.ts`,
fixableErrorCount: 0,
fixableWarningCount: 0,
messages: [],
suppressedMessages: [],
usedDeprecatedRules: [],
warningCount: 0,
}, {
errorCount: 4,
fatalErrorCount: 0,
// 3 errors (2 fixable), 2 warnings (1 fixable), 2 deprecated rules
...commonResult,
errorCount: 3,
filePath: `${process.cwd()}/index.ts`,
fixableErrorCount: 3,
fixableErrorCount: 2,
fixableWarningCount: 1,
messages: [{
column: 1,
line: 1,
message: 'Normal rule error',
ruleId: 'normal-error',
message: 'Error rule 1',
ruleId: 'error-rule-1',
severity: 2,
}, {
column: 1,
line: 2,
message: 'Normal rule warning',
ruleId: 'normal-warning',
severity: 1,
message: 'Error rule 2',
ruleId: 'error-rule-2',
severity: 2,
}, {
column: 1,
line: 3,
message: 'Warning rule 1',
ruleId: 'warning-rule-1',
severity: 1,
}, {
column: 2,
line: 4,
message: 'Warning rule 2',
ruleId: 'warning-rule-2',
severity: 1,
}, {
column: 1,
line: 5,
message: 'Error with trailing whitespace ',
ruleId: 'spaced-error',
severity: 2,
}],
suppressedMessages: [],
usedDeprecatedRules: [{
ruleId: 'deprecated-rule-1',
replacedBy: ['new-rule-1'],
}, {
ruleId: 'deprecated-rule-2',
replacedBy: ['new-rule-2'],
}],
warningCount: 2,
}, {
// 1 error (with no line), 2 deprecated rules (one already reported)
...commonResult,
errorCount: 1,
fatalErrorCount: 0,
filePath: `${process.cwd()}/utils.ts`,
fixableErrorCount: 0,
fixableWarningCount: 0,
// @ts-expect-error - line is required, but for ignored files it is not provided
// @ts-expect-error - `line` is required, but for ignored files it is not provided
messages: [{
column: 1,
message: 'Test core error',
message: 'Core error',
ruleId: null,
severity: 1,
}],
suppressedMessages: [],
usedDeprecatedRules: [{
ruleId: 'deprecated-rule-1',
replacedBy: ['new-rule-1'],
}, {
ruleId: 'deprecated-rule-2',
replacedBy: ['new-rule-2'],
}, {
ruleId: 'deprecated-rule-3',
replacedBy: ['new-rule-3'],
}],
warningCount: 0,
}]

const commonResult = {
const resultThemes = {
messageTheme: expect.any(Function),
positionTheme: expect.any(Function),
ruleTheme: expect.any(Function),
}

lintFilesMock.mockImplementationOnce(() => eslintResult)
lintFilesMock.mockImplementationOnce(() => lintResults)

expect(await eslintLib.lintFiles(testFiles)).toStrictEqual({
results: {
'index.ts': [{
...commonResult,
...resultThemes,
position: '1:1',
message: 'Normal rule error',
rule: 'normal-error',
message: 'Error rule 1',
rule: 'error-rule-1',
severity: 'X',
}, {
...commonResult,
...resultThemes,
position: '2:1',
message: 'Normal rule warning',
rule: 'normal-warning',
severity: '!',
message: 'Error rule 2',
rule: 'error-rule-2',
severity: 'X',
}, {
...commonResult,
...resultThemes,
position: '3:1',
message: 'Warning rule 1',
rule: 'warning-rule-1',
severity: '!',
}, {
...resultThemes,
position: '4:2',
message: 'Warning rule 2',
rule: 'warning-rule-2',
severity: '!',
}, {
...resultThemes,
position: '5:1',
message: 'Error with trailing whitespace',
rule: 'spaced-error',
severity: 'X',
}],
'utils.ts': [{
...commonResult,
...resultThemes,
position: '0',
message: 'Test core error',
message: 'Core error',
rule: 'core-error',
severity: '!',
}],
},
summary: {
deprecatedRules: ['deprecated-rule-1', 'deprecated-rule-2'],
errorCount: 5,
deprecatedRules: ['deprecated-rule-1', 'deprecated-rule-2', 'deprecated-rule-3'],
errorCount: 4,
fileCount: 3,
fixableErrorCount: 3,
fixableErrorCount: 2,
fixableWarningCount: 1,
linter: 'ESLint',
warningCount: 2,
},
})

})

})
Loading

0 comments on commit d80827e

Please sign in to comment.