1
0

Compare commits

..

No commits in common. "097d11875df4e002c88a76e69e583c3b6809ae44" and "83839804bee5caa0e8d4006ecb7f320fd85da5cf" have entirely different histories.

2 changed files with 12 additions and 47 deletions

View File

@ -5,31 +5,26 @@ Tool for standardizing Java tests.
import re
PATTERN_JAVADOC = r'/\*\*(?P<javadoc>.*(\n\s*\*.*)*?)\s*\*/'
TEST_PATTERN: re.Pattern = re.compile(
r''
+ r'(?:' + PATTERN_JAVADOC + r'\s*)?'
r'(?:/\*\*(?P<comment>.*)\*/)?\s*'
+ r'@(?P<annotation>Test|BeforeEach|ParameterizedTest)\s*'
+ r'(?:@DisplayName\("(?P<display>[^"]*?)"\)\s*)?'
+ r'(?P<visibility>public\s+|private\s+)?void\s+(?P<name>\w+)\(',
re.IGNORECASE)
+ r'(?:@DisplayName\("(?P<display>.*)"\)\s*)?'
+ r'(?P<visibility>public\s+|private\s+)?void\s+(?P<name>\w+)\(', re.IGNORECASE)
END_SYMBOLS = '.?!'
def format_test_prefix(name: str, description: str, annotation:
str,visibility:str, with_javadoc: bool,
with_display_name: bool) -> str:
indent = ''
str_builder = []
if with_javadoc:
str_builder += ['/** ',description,' */','\n']
str_builder += [indent, '@', annotation]
str_builder += ['@', annotation]
if with_display_name:
str_builder += ['\n', indent, '@DisplayName("']
str_builder += ['\n', '@DisplayName("']
str_builder.append(description.rstrip(END_SYMBOLS))
str_builder += ['")']
str_builder += ['\n', indent]
str_builder += ['\n']
if visibility:
str_builder += [visibility, ' ']
str_builder += ['void ',name,'(']
@ -48,22 +43,15 @@ def to_camel_case(description: str) -> str:
def from_camel_case(name: str) -> str:
return re.sub(r'(^|[A-Z])[a-z]*', lambda x: ' '+x.group(0).capitalize(), name).strip()
def parse_javadoc_to_description(text: str| None):
if text is None:
return ''
return re.sub(r'^\s*\*', ' ', text.strip()).strip()
def replace_test_pattern(match: re.Match, with_javadoc: bool, with_display_name: bool) -> str:
javadoc = parse_javadoc_to_description(match.group('javadoc'))
comment = (match.group('comment') or '').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 javadoc or from_camel_case(name)
description = display or comment or from_camel_case(name)
return format_test_prefix(to_camel_case(description),
description, annotation, visibility,

View File

@ -1,6 +1,5 @@
from standardize_test_format import standardize_java_text, PATTERN_JAVADOC
import re
from standardize_test_format import standardize_java_text
INPUT_1 = """
@ -38,36 +37,14 @@ OUTPUT_3 = """
public void helloWorldTest(
"""
INPUT_4 = """
/**
* Concat two produces a new array with the two input arrays joined together, with no separators.
*/
@Test
public void concatTwo()
"""
OUTPUT_4 = """
@Test
@DisplayName("Concat two produces a new array with the two input arrays joined together, with no separators")
public void concatTwoProducesANewArrayWithTheTwoInputArraysJoinedTogetherWithNoSeparators()
"""
def test_javadoc_parsing():
assert re.match(PATTERN_JAVADOC, '/** Hello World */') is not None
assert re.match(PATTERN_JAVADOC, '/** Hello\n * World */') is not None
assert re.match(PATTERN_JAVADOC, '/**\n * Hello World\n */') is not None
def test_1():
assert standardize_java_text(INPUT_1.strip(),False,True) == OUTPUT_1.strip()
assert standardize_java_text(INPUT_1.strip()) == OUTPUT_1.strip()
def test_2():
assert standardize_java_text(INPUT_2.strip(),False,True) == OUTPUT_2.strip()
assert standardize_java_text(INPUT_2.strip()) == OUTPUT_2.strip()
def test_3():
assert standardize_java_text(INPUT_3.strip(),False,True) == OUTPUT_3.strip()
def test_4():
assert standardize_java_text(INPUT_4.strip(),False,True) == OUTPUT_4.strip()
assert standardize_java_text(INPUT_3.strip()) == OUTPUT_3.strip()