mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-06 13:50:44 +08:00
test: add test cases for YAML block scalar with inconsistent and insufficient indentation
This commit is contained in:
@ -139,3 +139,82 @@ code_suggestions:
|
|||||||
'improved_code': 'const 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
|
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
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user