From 9c93d01c86692036fd2c98f902900a977c06c0f5 Mon Sep 17 00:00:00 2001 From: JCHacking Date: Wed, 5 Nov 2025 22:26:22 +0100 Subject: [PATCH 1/3] feat: refs for linked issues in conventional commit --- src/semantic_release/commit_parser/conventional/parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/semantic_release/commit_parser/conventional/parser.py b/src/semantic_release/commit_parser/conventional/parser.py index 5cab34c56..1e6a64d20 100644 --- a/src/semantic_release/commit_parser/conventional/parser.py +++ b/src/semantic_release/commit_parser/conventional/parser.py @@ -75,7 +75,7 @@ class ConventionalCommitParser( str.join( "", [ - r"^(?:clos(?:e|es|ed|ing)|fix(?:es|ed|ing)?|resolv(?:e|es|ed|ing)|implement(?:s|ed|ing)?):", + r"^(?:clos(?:e|es|ed|ing)|fix(?:es|ed|ing)?|resolv(?:e|es|ed|ing)|implement(?:s|ed|ing)?|refs):", r"[\t ]+(?P.+)[\t ]*$", ], ), From 5f757fb2149b92428046de71f18bbee3cc259cc4 Mon Sep 17 00:00:00 2001 From: JCHacking Date: Tue, 11 Nov 2025 16:26:51 +0100 Subject: [PATCH 2/3] feat: refs for linked issues in conventional commit --- src/semantic_release/commit_parser/conventional/parser.py | 2 +- .../unit/semantic_release/commit_parser/test_conventional.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/semantic_release/commit_parser/conventional/parser.py b/src/semantic_release/commit_parser/conventional/parser.py index 1e6a64d20..5d6dd2ec6 100644 --- a/src/semantic_release/commit_parser/conventional/parser.py +++ b/src/semantic_release/commit_parser/conventional/parser.py @@ -75,7 +75,7 @@ class ConventionalCommitParser( str.join( "", [ - r"^(?:clos(?:e|es|ed|ing)|fix(?:es|ed|ing)?|resolv(?:e|es|ed|ing)|implement(?:s|ed|ing)?|refs):", + r"^(?:clos(?:e|es|ed|ing)|fix(?:es|ed|ing)?|resolv(?:e|es|ed|ing)|implement(?:s|ed|ing)?|ref(?:s|ered|erence|ering)):", r"[\t ]+(?P.+)[\t ]*$", ], ), diff --git a/tests/unit/semantic_release/commit_parser/test_conventional.py b/tests/unit/semantic_release/commit_parser/test_conventional.py index 9298c1f24..67923700a 100644 --- a/tests/unit/semantic_release/commit_parser/test_conventional.py +++ b/tests/unit/semantic_release/commit_parser/test_conventional.py @@ -860,7 +860,7 @@ def test_parser_return_linked_merge_request_from_commit_message( # body mentions an issue and has a different git footer ( "In #666, the devils in the details...\n\nSigned-off-by: johndoe ", - [], + ["#666"], ), ] ], @@ -989,7 +989,7 @@ def test_parser_return_linked_merge_request_from_commit_message( # body mentions an issue and has a different git footer ( "In ABC-666, the devils in the details...\n\nSigned-off-by: johndoe ", - [], + ["ABC-666"], ), ] ], From c631fa3cc1187f9d986b098de927e392fd67e3a8 Mon Sep 17 00:00:00 2001 From: JCHacking Date: Wed, 12 Nov 2025 19:43:56 +0100 Subject: [PATCH 3/3] test: adapt tests --- .../commit_parser/conventional/parser.py | 2 +- tests/const.py | 10 ++++++++++ .../commit_parser/test_conventional.py | 20 +++---------------- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/semantic_release/commit_parser/conventional/parser.py b/src/semantic_release/commit_parser/conventional/parser.py index 5d6dd2ec6..8103ad2f5 100644 --- a/src/semantic_release/commit_parser/conventional/parser.py +++ b/src/semantic_release/commit_parser/conventional/parser.py @@ -75,7 +75,7 @@ class ConventionalCommitParser( str.join( "", [ - r"^(?:clos(?:e|es|ed|ing)|fix(?:es|ed|ing)?|resolv(?:e|es|ed|ing)|implement(?:s|ed|ing)?|ref(?:s|ered|erence|ering)):", + r"^(?:clos(?:e|es|ed|ing)|fix(?:es|ed|ing)?|resolv(?:e|es|ed|ing)|implement(?:s|ed|ing)?|ref(?:s|ered|erence|ering)?):", r"[\t ]+(?P.+)[\t ]*$", ], ), diff --git a/tests/const.py b/tests/const.py index 69a7ca778..fafd3fcfa 100644 --- a/tests/const.py +++ b/tests/const.py @@ -47,6 +47,7 @@ class RepoActionStep(str, Enum): COMMIT_MESSAGE = "{version}\n\nAutomatically generated by python-semantic-release\n" + SUPPORTED_ISSUE_CLOSURE_PREFIXES = [ "Close", "Closes", @@ -66,6 +67,15 @@ class RepoActionStep(str, Enum): "Implementing", ] +SUPPORTED_ISSUE_PREFIXES = [ + *SUPPORTED_ISSUE_CLOSURE_PREFIXES, + "Ref", + "Refs", + "Refered", + "Reference", + "Refering", +] + CONVENTIONAL_COMMITS_CHORE = ("ci: added a commit lint job\n",) # Different in-scope commits that produce a certain release type CONVENTIONAL_COMMITS_PATCH = ( diff --git a/tests/unit/semantic_release/commit_parser/test_conventional.py b/tests/unit/semantic_release/commit_parser/test_conventional.py index 67923700a..1ab2990ff 100644 --- a/tests/unit/semantic_release/commit_parser/test_conventional.py +++ b/tests/unit/semantic_release/commit_parser/test_conventional.py @@ -13,7 +13,7 @@ from semantic_release.commit_parser.token import ParsedCommit, ParseError from semantic_release.enums import LevelBump -from tests.const import SUPPORTED_ISSUE_CLOSURE_PREFIXES +from tests.const import SUPPORTED_ISSUE_PREFIXES if TYPE_CHECKING: from tests.conftest import MakeCommitObjFn @@ -753,7 +753,7 @@ def test_parser_return_linked_merge_request_from_commit_message( f"feat(parser): add magic parser\n\n{footer}", linked_issues, ) - for footer_prefix in SUPPORTED_ISSUE_CLOSURE_PREFIXES + for footer_prefix in SUPPORTED_ISSUE_PREFIXES for footer, linked_issues in [ # Single issue ( @@ -855,13 +855,6 @@ def test_parser_return_linked_merge_request_from_commit_message( (f"{footer_prefix} #666, {footer_prefix} #777", []), # Invalid 'and' separation (f"{footer_prefix}: #666and#777", ["#666and#777"]), - # Invalid prefix - ("ref: #666", []), - # body mentions an issue and has a different git footer - ( - "In #666, the devils in the details...\n\nSigned-off-by: johndoe ", - ["#666"], - ), ] ], *[ @@ -870,7 +863,7 @@ def test_parser_return_linked_merge_request_from_commit_message( f"feat(parser): add magic parser\n\n{footer}", linked_issues, ) - for footer_prefix in SUPPORTED_ISSUE_CLOSURE_PREFIXES + for footer_prefix in SUPPORTED_ISSUE_PREFIXES for footer, linked_issues in [ # Single issue ( @@ -984,13 +977,6 @@ def test_parser_return_linked_merge_request_from_commit_message( (f"{footer_prefix} ABC-666, {footer_prefix} ABC-777", []), # Invalid 'and' separation (f"{footer_prefix}: ABC-666andABC-777", ["ABC-666andABC-777"]), - # Invalid prefix - ("ref: ABC-666", []), - # body mentions an issue and has a different git footer - ( - "In ABC-666, the devils in the details...\n\nSigned-off-by: johndoe ", - ["ABC-666"], - ), ] ], *[