diff --git a/src/linter/rules/index.mjs b/src/linter/rules/index.mjs index eb0a6b0e..52361afb 100644 --- a/src/linter/rules/index.mjs +++ b/src/linter/rules/index.mjs @@ -2,7 +2,6 @@ import { duplicateStabilityNodes } from './duplicate-stability-nodes.mjs'; import { invalidChangeVersion } from './invalid-change-version.mjs'; -import { missingChangeVersion } from './missing-change-version.mjs'; import { missingIntroducedIn } from './missing-introduced-in.mjs'; /** @@ -11,6 +10,5 @@ import { missingIntroducedIn } from './missing-introduced-in.mjs'; export default { 'duplicate-stability-nodes': duplicateStabilityNodes, 'invalid-change-version': invalidChangeVersion, - 'missing-change-version': missingChangeVersion, 'missing-introduced-in': missingIntroducedIn, }; diff --git a/src/linter/rules/invalid-change-version.mjs b/src/linter/rules/invalid-change-version.mjs index aa688f49..0e69a5c0 100644 --- a/src/linter/rules/invalid-change-version.mjs +++ b/src/linter/rules/invalid-change-version.mjs @@ -60,10 +60,9 @@ export const invalidChangeVersion = entries => .filter(isInvalid) .map(version => ({ level: 'error', - message: LINT_MESSAGES.invalidChangeVersion.replace( - '{{version}}', - version - ), + message: version + ? LINT_MESSAGES.invalidChangeVersion.replace('{{version}}', version) + : LINT_MESSAGES.missingChangeVersion, location: { path: api_doc_source, position: yaml_position }, })) ) diff --git a/src/linter/rules/missing-change-version.mjs b/src/linter/rules/missing-change-version.mjs deleted file mode 100644 index e540ee0e..00000000 --- a/src/linter/rules/missing-change-version.mjs +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Checks if any change version is missing - * - * @param {ApiDocMetadataEntry[]} entries - * @returns {Array} - */ -export const missingChangeVersion = entries => { - const issues = []; - - for (const entry of entries) { - if (entry.changes.length === 0) continue; - - issues.push( - ...entry.changes - .filter(change => !change.version) - .map(() => ({ - level: 'warn', - message: 'Missing change version', - location: { - path: entry.api_doc_source, - position: entry.yaml_position, - }, - })) - ); - } - - return issues; -}; diff --git a/src/linter/tests/rules/invalid-change-version.test.mjs b/src/linter/tests/rules/invalid-change-version.test.mjs index 6ac0fed3..2b7fe370 100644 --- a/src/linter/tests/rules/invalid-change-version.test.mjs +++ b/src/linter/tests/rules/invalid-change-version.test.mjs @@ -7,6 +7,35 @@ import { fileURLToPath } from 'node:url'; import { execPath } from 'node:process'; describe('invalidChangeVersion', () => { + it('should return an empty array if all change versions are non-empty', () => { + const issues = invalidChangeVersion([assertEntry]); + + deepEqual(issues, []); + }); + + it('should return an issue if a change version is missing', () => { + const issues = invalidChangeVersion([ + { + ...assertEntry, + changes: [...assertEntry.changes, { version: undefined }], + }, + ]); + + deepEqual(issues, [ + { + level: 'error', + location: { + path: 'doc/api/assert.md', + position: { + end: { column: 35, line: 7, offset: 137 }, + start: { column: 1, line: 7, offset: 103 }, + }, + }, + message: 'Missing version field in the API doc entry', + }, + ]); + }); + it('should work with NODE_RELEASED_VERSIONS', () => { const result = spawnSync( execPath, diff --git a/src/linter/tests/rules/missing-change-version.test.mjs b/src/linter/tests/rules/missing-change-version.test.mjs deleted file mode 100644 index 9ca6ce22..00000000 --- a/src/linter/tests/rules/missing-change-version.test.mjs +++ /dev/null @@ -1,35 +0,0 @@ -import { describe, it } from 'node:test'; -import { deepEqual } from 'node:assert'; -import { missingChangeVersion } from '../../rules/missing-change-version.mjs'; -import { assertEntry } from '../fixtures/entries.mjs'; - -describe('missingChangeVersion', () => { - it('should return an empty array if all change versions are non-empty', () => { - const issues = missingChangeVersion([assertEntry]); - - deepEqual(issues, []); - }); - - it('should return an issue if a change version is missing', () => { - const issues = missingChangeVersion([ - { - ...assertEntry, - changes: [...assertEntry.changes, { version: undefined }], - }, - ]); - - deepEqual(issues, [ - { - level: 'warn', - location: { - path: 'doc/api/assert.md', - position: { - end: { column: 35, line: 7, offset: 137 }, - start: { column: 1, line: 7, offset: 103 }, - }, - }, - message: 'Missing change version', - }, - ]); - }); -});