gabykim's picture
python parser testing refactoring
2182a08
raw
history blame
2.79 kB
from typing import Dict, NamedTuple
class ExpectedChunk(NamedTuple):
name: str
docstring: str
content_snippet: str # A unique part of the content that should be present
# Test file contents
SIMPLE_FUCNTION_CLEANED_DOCSTRING = "Say hello to the world"
SIMPLE_FUNCTION_DOCSTRING = f'\"\"\"{SIMPLE_FUCNTION_CLEANED_DOCSTRING}\"\"\"'
SIMPLE_FUNCTION = f'''
{SIMPLE_FUNCTION_DOCSTRING}
def hello_world():
return "Hello, World!"
'''
SIMPLE_CLASS_DOCSTRING = f'\"\"\"A simple class for testing\"\"\"'
SIMPLE_CLASS = f'''
{SIMPLE_CLASS_DOCSTRING}
class SimpleClass:
def __init__(self):
self.value = 42
def get_value(self):
return self.value
'''
NESTED_OUTER_CLASS_DOCSTRING = "#Outer class docstring"
NESTED_CLASS = f'''
{NESTED_OUTER_CLASS_DOCSTRING}
class OuterClass:
class InnerClass:
"""Inner class docstring"""
def inner_method(self):
return "inner"
def outer_method(self):
return "outer"
'''
COMPLEX_FUNCTION_DOCSTRING = f"""\"\"\"
A complex function with type hints and docstring
Args:
param1: First parameter
param2: Optional second parameter
Returns:
List of strings
\"\"\""""
COMPLEX_CLASS_DOCSTRING = "# # #Complex class implementation"
COMPLEX_FILE = f'''
import os
from typing import List, Optional
{COMPLEX_FUNCTION_DOCSTRING}
def complex_function(param1: str, param2: Optional[int] = None) -> List[str]:
results = []
if param2 is not None:
results.extend([param1] * param2)
return results
# Some comment
CONSTANT = 42
{COMPLEX_CLASS_DOCSTRING}
class ComplexClass:
"""Complex class implementation Test Test"""
def __init__(self):
self._value = None
'''
INVALID_SYNTAX = '''def invalid_syntax(:'''
# Expected test results
SIMPLE_FILE_EXPECTATIONS = {
'hello_world': ExpectedChunk(
name="hello_world",
docstring=SIMPLE_FUNCTION_DOCSTRING,
content_snippet='return "Hello, World!"'
),
'SimpleClass': ExpectedChunk(
name="SimpleClass",
docstring=SIMPLE_CLASS_DOCSTRING,
content_snippet='self.value = 42'
)
}
NESTED_CLASS_EXPECTATIONS = {
'OuterClass': ExpectedChunk(
name="OuterClass",
docstring=NESTED_OUTER_CLASS_DOCSTRING,
content_snippet='class InnerClass'
)
}
COMPLEX_FILE_EXPECTATIONS = {
'complex_function': ExpectedChunk(
name="complex_function",
docstring=COMPLEX_FUNCTION_DOCSTRING,
content_snippet='List[str]'
),
'ComplexClass': ExpectedChunk(
name="ComplexClass",
docstring=COMPLEX_CLASS_DOCSTRING,
content_snippet='_value = None'
)
}
TEST_FILES = {
'simple.py': SIMPLE_FUNCTION + SIMPLE_CLASS,
'nested.py': NESTED_CLASS,
'complex.py': COMPLEX_FILE
}