From e79c34e0392f848a4a581d8bf0cecfdd3875026c Mon Sep 17 00:00:00 2001 From: jwsong98 Date: Thu, 22 May 2025 02:24:50 +0900 Subject: [PATCH 1/6] test: add test case for YAML wrapped with braces --- tests/unittest/test_try_fix_yaml.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/unittest/test_try_fix_yaml.py b/tests/unittest/test_try_fix_yaml.py index 826d7312..4233f463 100644 --- a/tests/unittest/test_try_fix_yaml.py +++ b/tests/unittest/test_try_fix_yaml.py @@ -83,3 +83,22 @@ We can further improve the code by using the `const` keyword instead of `var` in ''' expected_output = {'code_suggestions': [{'relevant_file': 'src/index.ts\n', 'label': 'best practice\n'}, {'relevant_file': 'src/index2.ts\n', 'label': 'enhancment'}]} 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 \ No newline at end of file From 069f36fc1f814f3f88d9c45a9c8f47f892b54d9c Mon Sep 17 00:00:00 2001 From: jwsong98 Date: Thu, 22 May 2025 02:26:08 +0900 Subject: [PATCH 2/6] test: add test case for YAML with tab indentation in block scalar --- tests/unittest/test_try_fix_yaml.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/unittest/test_try_fix_yaml.py b/tests/unittest/test_try_fix_yaml.py index 4233f463..94df8d14 100644 --- a/tests/unittest/test_try_fix_yaml.py +++ b/tests/unittest/test_try_fix_yaml.py @@ -101,4 +101,20 @@ code_suggestions: } ''' 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 \ No newline at end of file + 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 From 20e69c35306f637ad2c96de66e740cf6cab2a11e Mon Sep 17 00:00:00 2001 From: jwsong98 Date: Thu, 22 May 2025 02:27:41 +0900 Subject: [PATCH 3/6] test: add test case for YAML block scalar with leading plus signs in code --- tests/unittest/test_try_fix_yaml.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/unittest/test_try_fix_yaml.py b/tests/unittest/test_try_fix_yaml.py index 94df8d14..2d64b755 100644 --- a/tests/unittest/test_try_fix_yaml.py +++ b/tests/unittest/test_try_fix_yaml.py @@ -118,3 +118,24 @@ code_suggestions: ''' 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 From f10c38940686f78611656ac6e1bd03e76291837f Mon Sep 17 00:00:00 2001 From: jwsong98 Date: Thu, 22 May 2025 02:29:05 +0900 Subject: [PATCH 4/6] test: add test cases for YAML block scalar with inconsistent and insufficient indentation --- tests/unittest/test_try_fix_yaml.py | 79 +++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/tests/unittest/test_try_fix_yaml.py b/tests/unittest/test_try_fix_yaml.py index 2d64b755..09bdbff8 100644 --- a/tests/unittest/test_try_fix_yaml.py +++ b/tests/unittest/test_try_fix_yaml.py @@ -139,3 +139,82 @@ code_suggestions: '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 + From 684a438167fd92402bb7968a6ddd2d53256b636e Mon Sep 17 00:00:00 2001 From: jwsong98 Date: Thu, 22 May 2025 16:18:45 +0900 Subject: [PATCH 5/6] test: add test case for fixing incorrect indentation in YAML code block scalar --- tests/unittest/test_try_fix_yaml.py | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/unittest/test_try_fix_yaml.py b/tests/unittest/test_try_fix_yaml.py index 09bdbff8..b23e9dd3 100644 --- a/tests/unittest/test_try_fix_yaml.py +++ b/tests/unittest/test_try_fix_yaml.py @@ -218,3 +218,36 @@ code_suggestions: } 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 From f6a9d3c2ccea6cd7eee881a6be42136c64fa57f5 Mon Sep 17 00:00:00 2001 From: jwsong98 Date: Thu, 22 May 2025 16:55:52 +0900 Subject: [PATCH 6/6] fix:typo in test_with_initial_yaml, test_no_initial_yaml --- tests/unittest/test_try_fix_yaml.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unittest/test_try_fix_yaml.py b/tests/unittest/test_try_fix_yaml.py index b23e9dd3..98773c81 100644 --- a/tests/unittest/test_try_fix_yaml.py +++ b/tests/unittest/test_try_fix_yaml.py @@ -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,12 +76,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