Merge pull request #1812 from pr-agent-group-2/feature/try_fix_yaml-test

Add unit tests for try_fix_yaml function
This commit is contained in:
Tal
2025-05-24 16:25:58 +03:00
committed by GitHub

View File

@ -53,12 +53,12 @@ code_suggestions:
- relevant_file: |
src/index2.ts
label: |
enhancment
enhancement
```
We can further improve the code by using the `const` keyword instead of `var` in the `src/index.ts` file.
'''
expected_output = {'code_suggestions': [{'relevant_file': 'src/index.ts\n', 'label': 'best practice\n'}, {'relevant_file': 'src/index2.ts\n', 'label': 'enhancment'}]}
expected_output = {'code_suggestions': [{'relevant_file': 'src/index.ts\n', 'label': 'best practice\n'}, {'relevant_file': 'src/index2.ts\n', 'label': 'enhancement'}]}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='label') == expected_output
@ -76,10 +76,178 @@ code_suggestions:
- relevant_file: |
src/index2.ts
label: |
enhancment
enhancement
```
We can further improve the code by using the `const` keyword instead of `var` in the `src/index.ts` file.
'''
expected_output = {'code_suggestions': [{'relevant_file': 'src/index.ts\n', 'label': 'best practice\n'}, {'relevant_file': 'src/index2.ts\n', 'label': 'enhancment'}]}
expected_output = {'code_suggestions': [{'relevant_file': 'src/index.ts\n', 'label': 'best practice\n'}, {'relevant_file': 'src/index2.ts\n', 'label': 'enhancement'}]}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='label') == expected_output
def test_with_brackets_yaml_content(self):
review_text = '''\
{
code_suggestions:
- relevant_file: |
src/index.ts
label: |
best practice
- relevant_file: |
src/index2.ts
label: |
enhancement
}
'''
expected_output = {'code_suggestions': [{'relevant_file': 'src/index.ts\n', 'label': 'best practice\n'}, {'relevant_file': 'src/index2.ts\n', 'label': 'enhancement'}]}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='label') == expected_output
def test_tab_indent_yaml(self):
review_text = '''\
code_suggestions:
- relevant_file: |
src/index.ts
label: |
\tbest practice
- relevant_file: |
src/index2.ts
label: |
enhancement
'''
expected_output = {'code_suggestions': [{'relevant_file': 'src/index.ts\n', 'label': 'best practice\n'}, {'relevant_file': 'src/index2.ts\n', 'label': 'enhancement\n'}]}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='label') == expected_output
def test_leading_plus_mark_code(self):
review_text = '''\
code_suggestions:
- relevant_file: |
src/index.ts
label: |
best practice
existing_code: |
+ var router = createBrowserRouter([
improved_code: |
+ const router = createBrowserRouter([
'''
expected_output = {'code_suggestions': [{
'relevant_file': 'src/index.ts\n',
'label': 'best practice\n',
'existing_code': 'var router = createBrowserRouter([\n',
'improved_code': 'const router = createBrowserRouter([\n'
}]}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='improved_code') == expected_output
def test_inconsistent_indentation_in_block_scalar_yaml(self):
"""
This test case represents a situation where the AI outputs the opening '{' with 5 spaces
(resulting in an inferred indent level of 5), while the closing '}' is output with only 4 spaces.
This inconsistency makes it impossible for the YAML parser to automatically determine the correct
indent level, causing a parsing failure.
The root cause may be the LLM miscounting spaces or misunderstanding the active block scalar context
while generating YAML output.
"""
review_text = '''\
code_suggestions:
- relevant_file: |
tsconfig.json
existing_code: |
{
"key1": "value1",
"key2": {
"subkey": "value"
}
}
'''
expected_json = '''\
{
"key1": "value1",
"key2": {
"subkey": "value"
}
}
'''
expected_output = {
'code_suggestions': [{
'relevant_file': 'tsconfig.json\n',
'existing_code': expected_json
}]
}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='existing_code') == expected_output
def test_inconsistent_and_insufficient_indentation_in_block_scalar_yaml(self):
"""
This test case reproduces a YAML parsing failure where the block scalar content
generated by the AI includes inconsistent and insufficient indentation levels.
The root cause may be the LLM miscounting spaces or misunderstanding the active block scalar context
while generating YAML output.
"""
review_text = '''\
code_suggestions:
- relevant_file: |
tsconfig.json
existing_code: |
{
"key1": "value1",
"key2": {
"subkey": "value"
}
}
'''
expected_json = '''\
{
"key1": "value1",
"key2": {
"subkey": "value"
}
}
'''
expected_output = {
'code_suggestions': [{
'relevant_file': 'tsconfig.json\n',
'existing_code': expected_json
}]
}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='existing_code') == expected_output
def test_wrong_indentation_code_block_scalar(self):
review_text = '''\
code_suggestions:
- relevant_file: |
a.c
existing_code: |
int sum(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
'''
expected_code_block = '''\
int sum(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
'''
expected_output = {
"code_suggestions": [
{
"relevant_file": "a.c\n",
"existing_code": expected_code_block
}
]
}
assert try_fix_yaml(review_text, first_key='code_suggestions', last_key='existing_code') == expected_output