From 1df7736dc03d61f2430a95ab070e80b1644672f5 Mon Sep 17 00:00:00 2001 From: haddybhaiya Date: Sat, 28 Mar 2026 11:07:56 +0530 Subject: [PATCH 1/9] add : test_generator.py --- agent/llm/test_generator.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 agent/llm/test_generator.py diff --git a/agent/llm/test_generator.py b/agent/llm/test_generator.py new file mode 100644 index 0000000..9a5be0f --- /dev/null +++ b/agent/llm/test_generator.py @@ -0,0 +1,5 @@ +from agent.llm.groq_client import generate_review +def generate_tests(diff:str,context:list =None)->str: + context_text = "" + if context: + context_text = "\n\nContext:\n" + "\n".join(context[:5]) # Include only the first 5 chunks for context \ No newline at end of file From f46719b6309d1746c8783289b6be0f526197276c Mon Sep 17 00:00:00 2001 From: haddybhaiya Date: Sat, 28 Mar 2026 14:44:32 +0530 Subject: [PATCH 2/9] update : enhance test func to gen unit test gener --- agent/llm/test_generator.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/agent/llm/test_generator.py b/agent/llm/test_generator.py index 9a5be0f..878e4bb 100644 --- a/agent/llm/test_generator.py +++ b/agent/llm/test_generator.py @@ -2,4 +2,30 @@ def generate_tests(diff:str,context:list =None)->str: context_text = "" if context: - context_text = "\n\nContext:\n" + "\n".join(context[:5]) # Include only the first 5 chunks for context \ No newline at end of file + context_text = "\n\nContext:\n" + "\n".join(context[:5]) # Include only the first 5 chunks for context + prompt = f""" + You are a senior software engineer. + Generate unit tests for the given code diff. + + ---CONTEXT--- + {context_text} + + ---DIFF--- + {diff} + + ---OUTPUT FORMAT--- + -Use pytest + - cover edge cases + - keep it concise + """ + response = client.chat.completions.create( + model = model, + messages = [ + + { + "role": "user", + "content": prompt + } + ], + ) + return response.choices[0].message.content \ No newline at end of file From bc09fc92c2460ba974f27ef01e2c6838f4d0ae7e Mon Sep 17 00:00:00 2001 From: haddybhaiya Date: Sat, 28 Mar 2026 14:53:03 +0530 Subject: [PATCH 3/9] fix : import client,model --- agent/llm/test_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/llm/test_generator.py b/agent/llm/test_generator.py index 878e4bb..0409839 100644 --- a/agent/llm/test_generator.py +++ b/agent/llm/test_generator.py @@ -1,4 +1,4 @@ -from agent.llm.groq_client import generate_review +from agent.llm.groq_client import client, model def generate_tests(diff:str,context:list =None)->str: context_text = "" if context: From 4b77639997f9730b74247a71137046cadc878976 Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar Date: Sat, 28 Mar 2026 15:48:55 +0530 Subject: [PATCH 4/9] feat: add test generation after review generation --- agent/main.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/agent/main.py b/agent/main.py index 5c4f712..9a4f93b 100644 --- a/agent/main.py +++ b/agent/main.py @@ -68,6 +68,12 @@ def main(): print("Generating review...") review = generate_review(diff, context=relevant_chunks) + # 9. generate tests + from agent.llm.groq_client import generate_tests + tests = generate_tests(diff, context=relevant_chunks) + print("Generated tests:") + print(tests) + # 8. Post comment (Member 3 work) print("Posting comment...") post_comment(review) From 7f98b7bda5573bdc5e5619692a597831a53c7338 Mon Sep 17 00:00:00 2001 From: Dipesh Kumar Date: Sat, 28 Mar 2026 16:14:19 +0530 Subject: [PATCH 5/9] Phase 3: Improved retrieval with filtering and top-k results --- agent/indexing/vector_store.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/agent/indexing/vector_store.py b/agent/indexing/vector_store.py index 6cd9f45..41b615a 100644 --- a/agent/indexing/vector_store.py +++ b/agent/indexing/vector_store.py @@ -16,4 +16,18 @@ def query_embeddings(query_embedding, k=5): query_embeddings=[query_embedding], n_results=k ) - return results["documents"][0] \ No newline at end of file + + docs = results.get("documents", [[]])[0] + + # remove empty / tiny chunks + cleaned = [doc for doc in docs if doc and len(doc.strip()) > 20] + + # 🔥 prioritize useful code (functions/classes) + filtered = [] + for doc in cleaned: + if "def " in doc or "class " in doc: + filtered.append(doc) + + print(f"Retrieved {len(filtered)} relevant chunks") + + return filtered[:k] \ No newline at end of file From 51b0d1a15d7d130816b37102307783fe95a49ee0 Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar Date: Sat, 28 Mar 2026 16:25:48 +0530 Subject: [PATCH 6/9] fix: remove duplicate post comment code --- agent/main.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/agent/main.py b/agent/main.py index 27d2259..ec807bd 100644 --- a/agent/main.py +++ b/agent/main.py @@ -68,20 +68,16 @@ def main(): print("Generating review...") review = generate_review(diff, context=relevant_chunks) -<<<<<<< HEAD + # 8. Post comment + print("Posting comment...") + post_comment(review) + # 9. generate tests from agent.llm.groq_client import generate_tests tests = generate_tests(diff, context=relevant_chunks) print("Generated tests:") print(tests) - # 8. Post comment (Member 3 work) -======= - # 8. Post comment ->>>>>>> 82b71c0ee340d0321eb2b59865cdf4410d52585c - print("Posting comment...") - post_comment(review) - print("Done") if __name__ == "__main__": From 29bde2739298df4e03548e0ac3b5d389579008eb Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar Date: Sat, 28 Mar 2026 16:38:57 +0530 Subject: [PATCH 7/9] refactor: reorganize output generation and posting logic in main function --- agent/main.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/agent/main.py b/agent/main.py index ec807bd..722db9b 100644 --- a/agent/main.py +++ b/agent/main.py @@ -68,15 +68,20 @@ def main(): print("Generating review...") review = generate_review(diff, context=relevant_chunks) - # 8. Post comment - print("Posting comment...") - post_comment(review) - - # 9. generate tests - from agent.llm.groq_client import generate_tests + # 8. Generate tests + print("Generating tests...") + from agent.llm.test_generator import generate_tests tests = generate_tests(diff, context=relevant_chunks) - print("Generated tests:") - print(tests) + + # 9. Combine output + final_output = review + "\n\n---\n\n### Suggested Tests\n" + tests + + print("\n FINAL OUTPUT:\n") + print(final_output) + + # 10. Post comment + print("Posting comment...") + post_comment(final_output) print("Done") From 6a91079180de0e4111e7a7505687f4971dc33179 Mon Sep 17 00:00:00 2001 From: Priyanshu Kumar Date: Sat, 28 Mar 2026 17:10:04 +0530 Subject: [PATCH 8/9] refactor: streamline test generation and output formatting in main function --- agent/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/agent/main.py b/agent/main.py index 722db9b..144e4eb 100644 --- a/agent/main.py +++ b/agent/main.py @@ -2,6 +2,7 @@ from agent.indexing.chunker import chunk_code from agent.indexing.embedder import get_embeddings from agent.indexing.vector_store import store_embeddings, query_embeddings +from agent.llm.test_generator import generate_tests import subprocess from agent.llm.groq_client import generate_review @@ -70,11 +71,10 @@ def main(): # 8. Generate tests print("Generating tests...") - from agent.llm.test_generator import generate_tests tests = generate_tests(diff, context=relevant_chunks) # 9. Combine output - final_output = review + "\n\n---\n\n### Suggested Tests\n" + tests + final_output = f"{review}\n\n---\n\n### Suggested Tests\n{tests}" print("\n FINAL OUTPUT:\n") print(final_output) From bd2180677d4bc942376d5622542a18408b51b7d3 Mon Sep 17 00:00:00 2001 From: haddybhaiya Date: Sat, 28 Mar 2026 17:31:46 +0530 Subject: [PATCH 9/9] update : error catching & stricting comm size --- agent/llm/test_generator.py | 45 ++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/agent/llm/test_generator.py b/agent/llm/test_generator.py index 0409839..7382c9c 100644 --- a/agent/llm/test_generator.py +++ b/agent/llm/test_generator.py @@ -2,30 +2,39 @@ def generate_tests(diff:str,context:list =None)->str: context_text = "" if context: - context_text = "\n\nContext:\n" + "\n".join(context[:5]) # Include only the first 5 chunks for context + context_text = "\n\n".join(context[:5]) # Include only the first 5 chunks for context prompt = f""" You are a senior software engineer. - Generate unit tests for the given code diff. + Generate concise pytest test cases for the given code diff. + + STRICT RULES: + - Output only code + - Max 5 test functions + - keep tests short + - Focus on edge cases and core logic + - NO explanations, NO extra text + ---CONTEXT--- {context_text} ---DIFF--- {diff} - - ---OUTPUT FORMAT--- - -Use pytest - - cover edge cases - - keep it concise """ - response = client.chat.completions.create( - model = model, - messages = [ - - { - "role": "user", - "content": prompt - } - ], - ) - return response.choices[0].message.content \ No newline at end of file + + + try: + response = client.chat.completions.create( + model = model, + messages = [ + + { + "role": "user", + "content": prompt + } + ], + ) + return response.choices[0].message.content.strip() + except Exception as e: + return f"Error generating tests:{str(e)}" + \ No newline at end of file