From 5d3d529a6a57baee1bfdaaf3f0c503dee009e152 Mon Sep 17 00:00:00 2001 From: Zahra TehraniNasab <50144546+realmarv@users.noreply.github.com> Date: Mon, 13 Feb 2023 13:46:01 +0330 Subject: [PATCH] fix: subject-full-stop rule bugfix (#3531) * test(subject-full-stop): add two tests * fix: subject-full-stop rule bugfix Fixes https://github.com/conventional-changelog/commitlint/issues/3530 --- @commitlint/rules/src/subject-full-stop.test.ts | 16 ++++++++++++++++ @commitlint/rules/src/subject-full-stop.ts | 6 ++++-- 2 files changed, 20 insertions(+), 2 deletions(-) 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); +}); 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;