webbyuu / gpt-engineer /tests /tools /test_code_vector_repository.py
NahFam13's picture
z1
d26280a verified
# import example_snake_files
# import pytest
#
# from llama_index import Document
#
# from gpt_engineer.tools.experimental.code_vector_repository import CodeVectorRepository
#
#
# def mock_load_documents_from_directory(self, directory_name):
# nonCodeDoc = Document()
# nonCodeDoc.set_content(
# "example non code file which currently isnt loaded into the vector store"
# )
# nonCodeDoc.metadata["filename"] = "README.md"
#
# if directory_name == "python":
# doc1 = Document()
# doc1.set_content(example_snake_files.PYTHON)
# doc1.metadata["filename"] = "src/snake_game.py"
#
# if directory_name == "web":
# doc1 = Document()
# doc1.set_content(example_snake_files.HTML)
# doc1.metadata["filename"] = "src/index.html"
#
# doc2 = Document()
# doc2.set_content(example_snake_files.CSS)
# doc2.metadata["filename"] = "src/styles.css"
#
# doc3 = Document()
# doc3.set_content(example_snake_files.JAVASCRIPT)
# doc3.metadata["filename"] = "src/script.js"
#
# return [doc1, doc2, doc3, nonCodeDoc]
#
# if directory_name == "java":
# doc1 = Document()
# doc1.set_content(example_snake_files.JAVA)
# doc1.metadata["filename"] = "src/snake_game.java"
#
# if directory_name == "c#":
# doc1 = Document()
# doc1.set_content(example_snake_files.C_SHARP)
# doc1.metadata["filename"] = "src/snake_game.cs"
#
# if directory_name == "typescript":
# doc1 = Document()
# doc1.set_content(example_snake_files.TYPESCRIPT)
# doc1.metadata["filename"] = "src/snake_game.ts"
#
# if directory_name == "ruby":
# doc1 = Document()
# doc1.set_content(example_snake_files.RUBY)
# doc1.metadata["filename"] = "src/snake_game.rb"
#
# if directory_name == "php":
# doc1 = Document()
# doc1.set_content(example_snake_files.PHP)
# doc1.metadata["filename"] = "src/snake_game.php"
#
# if directory_name == "go":
# doc1 = Document()
# doc1.set_content(example_snake_files.GO)
# doc1.metadata["filename"] = "src/main.go"
#
# if directory_name == "kotlin":
# doc1 = Document()
# doc1.set_content(example_snake_files.KOTLIN)
# doc1.metadata["filename"] = "src/main/kotlin/SnakeGame.kt"
#
# if directory_name == "rust":
# doc1 = Document()
# doc1.set_content(example_snake_files.RUST)
# doc1.metadata["filename"] = "src/main.rs"
#
# if directory_name == "c++":
# doc1 = Document()
# doc1.set_content(example_snake_files.C_PLUS_PLUS)
# doc1.metadata["filename"] = "src/main.cpp"
#
# # c is supported, however it does not pass this test
# # if directory_name == "c":
# # doc1 = Document()
# # doc1.set_content(example_snake_files.C)
# # doc1.metadata["filename"] = "main.c"
#
# # Swift not currently supported
# # if directory_name == "swift":
# # doc1 = Document()
# # doc1.set_content(example_snake_files.SWIFT)
# # doc1.metadata["filename"] = "src/main.swift"
#
# return [doc1, nonCodeDoc]
#
#
# @pytest.mark.skip(
# reason="this test makes queries to an LLM as part of creating the vector store so requires an open ai api key. Todo: run the vector store with llm=None so this can run without an LLM"
# )
# @pytest.mark.parametrize(
# "language",
# [
# "python",
# "web",
# "java",
# "c#",
# "typescript",
# "ruby",
# "php",
# "go",
# "kotlin",
# "rust",
# "c++",
# ],
# ) # ToDo: add Swift, C and other languages
# def test_load_and_retrieve(monkeypatch, language):
# # arrange
# monkeypatch.setattr(
# CodeVectorRepository,
# "_load_documents_from_directory",
# mock_load_documents_from_directory,
# )
#
# repository = CodeVectorRepository()
# repository.load_from_directory(language)
#
# # act
# document_chunks = repository.relevent_code_chunks(
# "Invert the controlls so pressing the up moves the snake down, and pressing down moves the snake up.",
# llm=None,
# )
#
# # assert
# assert document_chunks.__len__() == 2 # set to return 2 documents
#
# assert (
# "up" in document_chunks[0].text.lower()
# ) # code should include section that sets directions
# assert "down" in document_chunks[0].text.lower()
#
#
# @pytest.mark.skip(
# reason="this test makes queries to an LLM so requires an open ai api key"
# )
# def test_load_and_query_python(monkeypatch):
# # arrange
# monkeypatch.setattr(
# CodeVectorRepository,
# "_load_documents_from_directory",
# mock_load_documents_from_directory,
# )
#
# repository = CodeVectorRepository()
# repository.load_from_directory("python")
#
# # act
# response = repository.query(
# "How would I invert the direction arrows so up moves the snake down, and down moves the snake up? "
# )
#
# # assert
# assert "Controller" in str(response)