diff --git a/pr_agent/algo/utils.py b/pr_agent/algo/utils.py index 5572a38c..38a5e5dd 100644 --- a/pr_agent/algo/utils.py +++ b/pr_agent/algo/utils.py @@ -585,9 +585,9 @@ def try_fix_yaml(response_text: str, response_text_lines_copy = response_text_lines.copy() for i in range(0, len(response_text_lines_copy)): for key in keys_yaml: - if key in response_text_lines_copy[i] and not '|-' in response_text_lines_copy[i]: + if key in response_text_lines_copy[i] and not '|' in response_text_lines_copy[i]: response_text_lines_copy[i] = response_text_lines_copy[i].replace(f'{key}', - f'{key} |-\n ') + f'{key} |\n ') try: data = yaml.safe_load('\n'.join(response_text_lines_copy)) get_logger().info(f"Successfully parsed AI prediction after adding |-\n") diff --git a/pr_agent/settings/pr_description_prompts.toml b/pr_agent/settings/pr_description_prompts.toml index 0584646d..de7c3d54 100644 --- a/pr_agent/settings/pr_description_prompts.toml +++ b/pr_agent/settings/pr_description_prompts.toml @@ -48,7 +48,7 @@ class FileDescription(BaseModel): class PRDescription(BaseModel): type: List[PRType] = Field(description="one or more types that describe the PR content. Return the label member value (e.g. 'Bug fix', not 'bug_fix')") {%- if enable_semantic_files_types %} - pr_files: List[FileDescription] = Field(max_items=15, description="a list of the files in the PR, and their changes summary.") + pr_files: List[FileDescription] = Field(max_items=15, description="a list of the files in the PR, and summary of their changes") {%- endif %} description: str = Field(description="an informative and concise description of the PR. Use bullet points. Display first the most significant changes.") title: str = Field(description="an informative title for the PR, describing its main theme") diff --git a/tests/unittest/test_load_yaml.py b/tests/unittest/test_load_yaml.py index 90c4c196..17d46936 100644 --- a/tests/unittest/test_load_yaml.py +++ b/tests/unittest/test_load_yaml.py @@ -34,7 +34,7 @@ PR Feedback: with pytest.raises(ScannerError): yaml.safe_load(yaml_str) - expected_output = {'PR Analysis': {'Main theme': 'Enhancing the `/describe` command prompt by adding title and description', 'Type of PR': 'Enhancement', 'Relevant tests': False, 'Focused PR': 'Yes, the PR is focused on enhancing the `/describe` command prompt.'}, 'PR Feedback': {'General suggestions': 'The PR seems to be well-structured and focused on a specific enhancement. However, it would be beneficial to add tests to ensure the new feature works as expected.', 'Code feedback': [{'relevant file': 'pr_agent/settings/pr_description_prompts.toml', 'suggestion': "Consider using a more descriptive variable name than 'user' for the command prompt. A more descriptive name would make the code more readable and maintainable. [medium]", 'relevant line': 'user="""PR Info: aaa'}], 'Security concerns': False}} + expected_output = {'PR Analysis': {'Main theme': 'Enhancing the `/describe` command prompt by adding title and description', 'Type of PR': 'Enhancement', 'Relevant tests': False, 'Focused PR': 'Yes, the PR is focused on enhancing the `/describe` command prompt.'}, 'PR Feedback': {'General suggestions': 'The PR seems to be well-structured and focused on a specific enhancement. However, it would be beneficial to add tests to ensure the new feature works as expected.', 'Code feedback': [{'relevant file': 'pr_agent/settings/pr_description_prompts.toml\n', 'suggestion': "Consider using a more descriptive variable name than 'user' for the command prompt. A more descriptive name would make the code more readable and maintainable. [medium]", 'relevant line': 'user="""PR Info: aaa\n'}], 'Security concerns': False}} assert load_yaml(yaml_str) == expected_output def test_load_invalid_yaml2(self): @@ -45,7 +45,7 @@ PR Feedback: with pytest.raises(ScannerError): yaml.safe_load(yaml_str) - expected_output = [{'relevant file': 'src/app.py:', 'suggestion content': 'The print statement is outside inside the if __name__ ==:'}] + expected_output = [{'relevant file': 'src/app.py:\n', 'suggestion content': 'The print statement is outside inside the if __name__ ==:'}] assert load_yaml(yaml_str) == expected_output diff --git a/tests/unittest/test_try_fix_yaml.py b/tests/unittest/test_try_fix_yaml.py index a05fe807..90fa63f1 100644 --- a/tests/unittest/test_try_fix_yaml.py +++ b/tests/unittest/test_try_fix_yaml.py @@ -16,7 +16,7 @@ class TestTryFixYaml: # The function adds '|-' to 'relevant line:' if it is not already present and successfully parses the YAML string. def test_add_relevant_line(self): review_text = "relevant line: value: 3\n" - expected_output = {"relevant line": "value: 3"} + expected_output = {'relevant line': 'value: 3\n'} assert try_fix_yaml(review_text) == expected_output # The function extracts YAML snippet