From a1f2a62ce8d36c4828bc534b0a37ef4fa224626a Mon Sep 17 00:00:00 2001 From: Milind Shakya Date: Thu, 14 May 2026 16:31:53 -0400 Subject: [PATCH 1/2] Updates --- giticket/giticket.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/giticket/giticket.py b/giticket/giticket.py index 0b82437..9421274 100644 --- a/giticket/giticket.py +++ b/giticket/giticket.py @@ -15,11 +15,11 @@ conventionalcommit_regex = r'^(?Pbuild|chore|ci|docs|feat|fix|perf|refactor|style|test)(\((?P.+)\))?: (?P.+)' -def capitalize_first(text): - return text[:1].upper() + text[1:] if text else text +def capitalize(text, capitalize_spaces): + return text[:capitalize_spaces].upper() + text[capitalize_spaces:] if text else text -def update_commit_message(filename, regex, mode, format_string, conventionalcommits=False, capitalize=False): +def update_commit_message(filename, regex, mode, format_string, capitalize_spaces, conventionalcommits=False): with io.open(filename, 'r+') as fd: contents = fd.readlines() commit_msg = contents[0].rstrip('\r\n') @@ -46,7 +46,7 @@ def update_commit_message(filename, regex, mode, format_string, conventionalcomm scope = ', '.join(tickets) subject = match.group('subject') if capitalize: - subject = capitalize_first(subject) + subject = capitalize(subject) format_string = '{type}({scope}): {subject}' new_commit_msg = format_string.format( type=type, scope=scope, subject=subject @@ -56,8 +56,8 @@ def update_commit_message(filename, regex, mode, format_string, conventionalcomm ticket=tickets[0], tickets=', '.join(tickets), commit_msg=commit_msg ) - if capitalize: - new_commit_msg = capitalize_first(new_commit_msg) + if capitalize_spaces: + new_commit_msg = capitalize(new_commit_msg, capitalize_spaces) contents[0] = six.text_type(new_commit_msg + "\n") fd.seek(0) @@ -87,7 +87,7 @@ def main(argv=None): parser = argparse.ArgumentParser() parser.add_argument('filenames', nargs='+') parser.add_argument('--conventionalcommits', action='store_true') - parser.add_argument('--capitalize', action='store_true') + parser.add_argument('--capitalize', nargs='?') parser.add_argument('--regex') parser.add_argument('--format', nargs='?') parser.add_argument('--mode', nargs='?', const=underscore_split_mode, @@ -99,7 +99,8 @@ def main(argv=None): return 1 regex = args.regex or r'[A-Z]+-\d+' # noqa format_string = args.format or '{ticket} {commit_msg}' # noqa - update_commit_message(args.filenames[0], regex, args.mode, format_string, args.conventionalcommits, args.capitalize) + capitalize_spaces = args.capitalize or 1 + update_commit_message(args.filenames[0], regex, args.mode, format_string, args.conventionalcommits, capitalize_spaces) if __name__ == '__main__': From 3742db8f981c83d07c4079cf54f28aa982744c93 Mon Sep 17 00:00:00 2001 From: Milind Shakya Date: Thu, 14 May 2026 16:40:17 -0400 Subject: [PATCH 2/2] Add additional test. Add additional test. Add additional test. --- giticket/giticket.py | 6 ++---- tests/test_giticket.py | 21 ++++++++++++++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/giticket/giticket.py b/giticket/giticket.py index 9421274..9feb27b 100644 --- a/giticket/giticket.py +++ b/giticket/giticket.py @@ -19,7 +19,7 @@ def capitalize(text, capitalize_spaces): return text[:capitalize_spaces].upper() + text[capitalize_spaces:] if text else text -def update_commit_message(filename, regex, mode, format_string, capitalize_spaces, conventionalcommits=False): +def update_commit_message(filename, regex, mode, format_string, conventionalcommits=False, capitalize_spaces=0): with io.open(filename, 'r+') as fd: contents = fd.readlines() commit_msg = contents[0].rstrip('\r\n') @@ -45,8 +45,6 @@ def update_commit_message(filename, regex, mode, format_string, capitalize_space else: scope = ', '.join(tickets) subject = match.group('subject') - if capitalize: - subject = capitalize(subject) format_string = '{type}({scope}): {subject}' new_commit_msg = format_string.format( type=type, scope=scope, subject=subject @@ -99,7 +97,7 @@ def main(argv=None): return 1 regex = args.regex or r'[A-Z]+-\d+' # noqa format_string = args.format or '{ticket} {commit_msg}' # noqa - capitalize_spaces = args.capitalize or 1 + capitalize_spaces = args.capitalize or 0 update_commit_message(args.filenames[0], regex, args.mode, format_string, args.conventionalcommits, capitalize_spaces) diff --git a/tests/test_giticket.py b/tests/test_giticket.py index dc8dc87..9d404fe 100644 --- a/tests/test_giticket.py +++ b/tests/test_giticket.py @@ -144,10 +144,21 @@ def test_update_commit_message_capitalize(mock_branch_name, tmpdir): path.write("Test commit message") update_commit_message(six.text_type(path), r'[a-zA-Z]+-\d+', 'regex_match', '{ticket}: {commit_msg}', - capitalize=True) + capitalize_spaces=1) assert path.read() == "Jira-1234: Test commit message\n" +@mock.patch(TESTING_MODULE + '.get_branch_name') +def test_update_commit_message_capitalize_multiple_chars(mock_branch_name, tmpdir): + mock_branch_name.return_value = "jira-1234" + path = tmpdir.join('file.txt') + path.write("Test commit message") + update_commit_message(six.text_type(path), r'[a-zA-Z]+-\d+', + 'regex_match', '{ticket}: {commit_msg}', + capitalize_spaces=4) + assert path.read() == "JIRA-1234: Test commit message\n" + + @mock.patch(TESTING_MODULE + '.get_branch_name') def test_update_commit_message_capitalize_already_uppercase(mock_branch_name, tmpdir): mock_branch_name.return_value = "JIRA-1234_new_feature" @@ -155,7 +166,7 @@ def test_update_commit_message_capitalize_already_uppercase(mock_branch_name, tm path.write("Test commit message") update_commit_message(six.text_type(path), r'[A-Z]+-\d+', 'regex_match', '{ticket}: {commit_msg}', - capitalize=True) + capitalize_spaces=1) assert path.read() == "JIRA-1234: Test commit message\n" @@ -166,8 +177,8 @@ def test_update_commit_message_capitalize_conventionalcommits(mock_branch_name, path.write("feat: add new feature") update_commit_message(six.text_type(path), r'[A-Z]+-\d+', 'regex_match', '{commit_msg}', - conventionalcommits=True, capitalize=True) - assert path.read() == "feat(JIRA-5678): Add new feature\n" + conventionalcommits=True, capitalize_spaces=1) + assert path.read() == "feat(JIRA-5678): add new feature\n" @mock.patch(TESTING_MODULE + '.get_branch_name') @@ -234,7 +245,7 @@ def test_main(mock_update_commit_message, mock_argparse): mock_args.format = None mock_args.mode = 'underscore_split' mock_args.conventionalcommits = True - mock_args.capitalize = False + mock_args.capitalize = None mock_argparse.ArgumentParser.return_value.parse_args.return_value = mock_args main() mock_update_commit_message.assert_called_once_with('foo.txt', r'[A-Z]+-\d+',