From 351578b625c34db79bfa2e7d5a046ba94187ccbd Mon Sep 17 00:00:00 2001 From: realmarv Date: Wed, 8 Feb 2023 16:57:55 +0330 Subject: [PATCH 1/2] test(subject-full-stop): add two tests --- @commitlint/rules/src/subject-full-stop.test.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/@commitlint/rules/src/subject-full-stop.test.ts b/@commitlint/rules/src/subject-full-stop.test.ts index c6587adecd..734b4644ad 100644 --- a/@commitlint/rules/src/subject-full-stop.test.ts +++ b/@commitlint/rules/src/subject-full-stop.test.ts @@ -5,12 +5,16 @@ const messages = { empty: 'test:\n', with: `test: subject.\n`, without: `test: subject\n`, + standardScopeWith: `type(scope): subject.\n`, + nonStandardScopeWith: "type.scope: subject.\n" }; const parsed = { empty: parse(messages.empty), with: parse(messages.with), without: parse(messages.without), + standardScopeWith: parse(messages.standardScopeWith), + nonStandardScopeWith: parse(messages.nonStandardScopeWith), }; test('empty against "always" should succeed', async () => { @@ -48,3 +52,15 @@ test('without against "never ." should succeed', async () => { const expected = true; expect(actual).toEqual(expected); }); + +test('commit message title with standard scope and full-stop against "never ." should fail', async () => { + const [actual] = subjectFullStop(await parsed.standardScopeWith, 'never', '.'); + const expected = false; + expect(actual).toEqual(expected); +}); + +test('commit message title with non standard scope and full-stop against "never ." should fail', async () => { + const [actual] = subjectFullStop(await parsed.nonStandardScopeWith, 'never', '.'); + const expected = false; + expect(actual).toEqual(expected); +}); From 56d66ad0c32416f7ad3ee5234578dc5803c06922 Mon Sep 17 00:00:00 2001 From: realmarv Date: Thu, 9 Feb 2023 16:12:02 +0330 Subject: [PATCH 2/2] fix: subject-full-stop rule bugfix Fixes https://github.com/conventional-changelog/commitlint/issues/3530 --- @commitlint/rules/src/subject-full-stop.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/@commitlint/rules/src/subject-full-stop.ts b/@commitlint/rules/src/subject-full-stop.ts index 050a4f7b16..91c0d9bb42 100644 --- a/@commitlint/rules/src/subject-full-stop.ts +++ b/@commitlint/rules/src/subject-full-stop.ts @@ -6,12 +6,14 @@ export const subjectFullStop: SyncRule = ( when = 'always', value = '.' ) => { - const input = parsed.subject; - if (!input) { + let colonIndex = parsed.header.indexOf(':'); + if (colonIndex > 0 && colonIndex === parsed.header.length - 1) { return [true]; } + const input = parsed.header; + const negated = when === 'never'; const hasStop = input[input.length - 1] === value;