From f941882e3506814f044e9f113ded2229eb9a2237 Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Thu, 27 Feb 2025 14:48:37 +0100 Subject: [PATCH] Moved into module --- standardize_test_format/__init__.py | 64 +++++++++++++++++++++++++++++ standardize_test_format/__main__.py | 54 ++---------------------- 2 files changed, 67 insertions(+), 51 deletions(-) diff --git a/standardize_test_format/__init__.py b/standardize_test_format/__init__.py index 47528e1..bd3b7b0 100644 --- a/standardize_test_format/__init__.py +++ b/standardize_test_format/__init__.py @@ -1,2 +1,66 @@ """# TODO """ + +import re + +TEST_PATTERN: re.Pattern = re.compile( + r'(?:/\*\*(?P.*)\*/)\s*' + + r'@(?PTest|BeforeEach|ParameterizedTest)\s*' + + r'(?:@DisplayName\("(?P.*)"\)\s*)?' + + r'(?Ppublic\s+|private\s+)?void\s+(?P\w+)\(', re.IGNORECASE) + +OUTPUT_JAVADOC = False +OUTPUT_DISPLAY_NAME = True + +END_SYMBOLS = '.?!' + +def format_test_prefix(name: str, description: str, annotation: + str,visibility:str) -> str: + str_builder = [] + if OUTPUT_JAVADOC: + str_builder += ['/** ',description,' */','\n'] + str_builder += ['@', annotation] + if OUTPUT_DISPLAY_NAME: + str_builder += ['\n', '@DisplayName("'] + str_builder.append(description.rstrip(END_SYMBOLS)) + str_builder += ['")'] + str_builder += ['\n'] + if visibility: + str_builder += [visibility, ' '] + str_builder += ['void ',name,'('] + return ''.join(str_builder) + +def to_camel_case(description: str) -> str: + description = description.strip(' \t.').replace(',',' ') + words = description.split(' ') + + words[0] = words[0].lower() + for i in range(1, len(words)): + words[i] = words[i].capitalize() + + return ''.join(words) + +def from_camel_case(name: str) -> str: + # TODO + return name + +def replace_test_pattern(match: re.Match) -> str: + comment = match.group('comment').strip() + annotation = match.group('annotation').strip() + visibility = (match.group('visibility') or '').strip() + name = match.group('name').strip() + display = (match.group('display') or '').strip() + + + description = display or comment or from_camel_case(name) + + + + formatted = format_test_prefix(to_camel_case(description), + description, annotation, visibility) + print(formatted) + return formatted + + +def standardize_java_text(text: str): + return TEST_PATTERN.sub(replace_test_pattern, text) diff --git a/standardize_test_format/__main__.py b/standardize_test_format/__main__.py index d6bb111..973e974 100644 --- a/standardize_test_format/__main__.py +++ b/standardize_test_format/__main__.py @@ -1,53 +1,10 @@ import pathlib import argparse -import re -TEST_PATTERN: re.Pattern = re.compile( - r'(?:/\*\*(?P.*)\*/)\s*' - + r'@(?PTest|BeforeEach|ParameterizedTest)\s*' - + r'(?Ppublic\s+|private\s+)?void\s+(?P\w+)\(', re.IGNORECASE) - -OUTPUT_JAVADOC = False -OUTPUT_DISPLAY_NAME = True - -def format_test_prefix(name: str, description: str, annotation: - str,visibility:str) -> str: - str_builder = [] - if OUTPUT_JAVADOC: - str_builder += ['/** ',description,' */','\n'] - str_builder += ['@', annotation] - if OUTPUT_DISPLAY_NAME: - str_builder += ['\n', '@DisplayName("',description,'")'] - str_builder += ['\n'] - if visibility: - str_builder += [visibility, ' '] - str_builder += ['void ',name,'('] - return ''.join(str_builder) - -def name_from_description(description: str) -> str: - description = description.strip(' \t.') - words = description.split(' ') - - words[0] = words[0].lower() - for i in range(1, len(words)): - words[i] = words[i].capitalize() - - return ''.join(words) - -def replace_test_pattern(match: re.Match) -> str: - description = match.group('comment').strip() - annotation = match.group('annotation').strip() - visibility = (match.group('visibility') or '').strip() - name = match.group('name').strip() - formatted = format_test_prefix(name_from_description(description), - description, annotation, visibility) - print(formatted) - return formatted - - -def standardize_java_text(text: str): - return TEST_PATTERN.sub(replace_test_pattern, text) +from . import standardize_java_text +def test_files(repo: pathlib.Path) -> list[pathlib.Path]: + return list(repo.rglob('*.java')) def standardize_in_file(path: pathlib.Path): with open(path) as f: @@ -58,10 +15,6 @@ def standardize_in_file(path: pathlib.Path): if False: with open(path, 'w') as f: f.write(text) - -def test_files(repo: pathlib.Path) -> list[pathlib.Path]: - return list(repo.rglob('*.java')) - def main(): argparser = argparse.ArgumentParser() argparser .add_argument('repo', type=pathlib.Path) @@ -72,4 +25,3 @@ def main(): if __name__ == '__main__': main() -