🧪 test: level 2

This commit is contained in:
Florian Hönicke
2023-05-01 11:41:26 +02:00
parent c8aa95e4ce
commit d52e7489c5
4 changed files with 43 additions and 26 deletions

View File

@@ -187,24 +187,24 @@ metas:
tag_name=REQUIREMENTS_FILE_TAG,
)[REQUIREMENTS_FILE_NAME]
# self.generate_and_persist_file(
# section_title='Generate Dockerfile',
# template=template_generate_apt_get_install,
# destination_folder=MICROSERVICE_FOLDER_v1,
# file_name_s=None,
# parse_result_fn=self.parse_result_fn_dockerfile,
# docker_file_wrapped=self.read_docker_template(),
# requirements_file_wrapped=self.files_to_string({
# REQUIREMENTS_FILE_NAME: requirements_content,
# })
# )
# docker file from curdir
shutil.copy(
src=os.path.join(os.path.dirname(__file__), 'static_files', 'microservice', 'Dockerfile'),
dst=MICROSERVICE_FOLDER_v1 + '/Dockerfile'
self.generate_and_persist_file(
section_title='Generate Dockerfile',
template=template_generate_apt_get_install,
destination_folder=MICROSERVICE_FOLDER_v1,
file_name_s=None,
parse_result_fn=self.parse_result_fn_dockerfile,
docker_file_wrapped=self.read_docker_template(),
requirements_file_wrapped=self.files_to_string({
REQUIREMENTS_FILE_NAME: requirements_content,
})
)
# # docker file from curdir
# shutil.copy(
# src=os.path.join(os.path.dirname(__file__), 'static_files', 'microservice', 'Dockerfile'),
# dst=MICROSERVICE_FOLDER_v1 + '/Dockerfile'
# )
self.write_config_yml(microservice_name, MICROSERVICE_FOLDER_v1)
print('\nFirst version of the microservice generated. Start iterating on it to make the tests pass...')
@@ -215,14 +215,17 @@ metas:
return f.read()
def parse_result_fn_dockerfile(self, content_raw: str):
json_string = self.extract_content_from_result(content_raw, 'apt-get-packages.json', match_single_block=True)
packages = json.loads(json_string)['packages']
docker_file_template = self.read_docker_template()
return {DOCKER_FILE_NAME: docker_file_template.replace('{{apt_get_packages}}', '{apt_get_packages}').format(apt_get_packages=content_raw)}
return {DOCKER_FILE_NAME: docker_file_template.replace('{{apt_get_packages}}', '{apt_get_packages}').format(apt_get_packages=packages)}
def parse_result_fn_requirements(self, content_raw: str):
content_parsed = self.extract_content_from_result(content_raw, 'requirements.txt', match_single_block=True)
lines = content_parsed.split('\n')
lines = [line for line in lines if not any([pkg in line for pkg in ['jina', 'docarray', 'openai', 'pytest']])]
lines = [line for line in lines if not any([pkg in line for pkg in ['jina', 'docarray', 'openai', 'pytest', 'gpt_3_5_turbo_api']])]
content_modified = f'''jina==3.15.1.dev14
docarray==0.21.0
openai>=0.26.0
@@ -322,7 +325,7 @@ pytest
section_title='Debugging apt-get dependency issue',
template=template_solve_apt_get_dependency_issue,
destination_folder=next_microservice_path,
file_name_s=None,
file_name_s=['apt-get-packages.json'],
parse_result_fn=self.parse_result_fn_dockerfile,
system_definition_examples=[],
summarized_error=summarized_error,

View File

@@ -1,5 +1,7 @@
FROM jinaai/jina:3.14.1-py39-standard
RUN apt-get update && apt-get install --no-install-recommends -y {{apt_get_packages}} && apt-get clean && rm -rf /var/lib/apt/lists/*
## install requirements for the executor
COPY requirements.txt .
RUN pip install --compile -r requirements.txt

View File

@@ -157,13 +157,10 @@ template_generate_requirements = PromptTemplate.from_template(
{code_files_wrapped}
Write the content of the requirements.txt file.
The requirements.txt file must include the following packages in that specified version:
Write the content of the requirements.txt file like this:
**requirements.txt**
```
jina==3.15.1.dev14
docarray==0.21.0
openai>=0.26.0
pytest
...
```
Add any more packages that are needed to run the code.
You must not add gpt_3_5_turbo_api to the requirements.txt file.
@@ -184,7 +181,17 @@ Name all packages which need to be installed via `apt-get install` in above Dock
Note that you must not list apt-get packages that are already installed in the Dockerfile.
Note that openai does not require any apt-get packages.
Output the packages that need to me placed at {{apt_get_packages}} as a white space separated list:
Note that you only list packages where you are highly confident that they are really needed.
Output the packages that need to me placed at {{apt_get_packages}} as json in the following format:
**apt-get-packages.json**
```json
{{"packages": ["<package1>", "<package2>"]}}
```
Have in mind that the packages list can be empty like this:
**apt-get-packages.json**
```json
{{"packages": []}}
```
'''
)

View File

@@ -26,6 +26,11 @@ def test_generation_level_0(tmpdir):
assert generator.generate() == 0
# fixture
@pytest.fixture
def tmpdir():
return 'microservice'
def test_generation_level_1(tmpdir):
"""
Requirements: