소스 검색

test: add integration tests on CodeExecutor with the sandbox service (#4015)

tags/0.6.7
Bowen Liang 1 년 전
부모
커밋
44857702ae
No account linked to committer's email address

+ 8
- 0
.github/workflows/api-tests.yml 파일 보기

@@ -39,6 +39,14 @@ jobs:
- name: Run Tool
run: dev/pytest/pytest_tools.sh

- name: Set up Sandbox
uses: hoverkraft-tech/compose-action@v2.0.0
with:
compose-file: |
docker/docker-compose.middleware.yaml
services: |
sandbox

- name: Run Workflow
run: dev/pytest/pytest_workflow.sh


+ 3
- 1
api/pyproject.toml 파일 보기

@@ -55,4 +55,6 @@ HUGGINGFACE_TEXT_GEN_ENDPOINT_URL = "a"
HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL = "b"
HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL = "c"
MOCK_SWITCH = "true"
CODE_MAX_STRING_LENGTH = "80000"
CODE_MAX_STRING_LENGTH = "80000"
CODE_EXECUTION_ENDPOINT="http://127.0.0.1:8194"
CODE_EXECUTION_API_KEY="dify-sandbox"

+ 0
- 0
api/tests/integration_tests/tools/code/__init__.py 파일 보기


+ 0
- 0
api/tests/integration_tests/workflow/nodes/code_executor/__init__.py 파일 보기


+ 18
- 0
api/tests/integration_tests/workflow/nodes/code_executor/test_code_javascript.py 파일 보기

@@ -0,0 +1,18 @@
from core.helper.code_executor.code_executor import CodeExecutor

CODE_LANGUAGE = 'javascript'


def test_javascript_plain():
code = 'console.log("Hello World")'
result_message = CodeExecutor.execute_code(language=CODE_LANGUAGE, preload='', code=code)
assert result_message == 'Hello World\n'


def test_javascript_json():
code = """
obj = {'Hello': 'World'}
console.log(JSON.stringify(obj))
"""
result = CodeExecutor.execute_code(language=CODE_LANGUAGE, preload='', code=code)
assert result == '{"Hello":"World"}\n'

+ 14
- 0
api/tests/integration_tests/workflow/nodes/code_executor/test_code_jina2.py 파일 보기

@@ -0,0 +1,14 @@
import base64

from core.helper.code_executor.code_executor import CodeExecutor
from core.helper.code_executor.jinja2_transformer import JINJA2_PRELOAD, PYTHON_RUNNER

CODE_LANGUAGE = 'jinja2'


def test_jinja2():
template = 'Hello {{template}}'
inputs = base64.b64encode(b'{"template": "World"}').decode('utf-8')
code = PYTHON_RUNNER.replace('{{code}}', template).replace('{{inputs}}', inputs)
result = CodeExecutor.execute_code(language=CODE_LANGUAGE, preload=JINJA2_PRELOAD, code=code)
assert result == '<<RESULT>>Hello World<<RESULT>>\n'

+ 18
- 0
api/tests/integration_tests/workflow/nodes/code_executor/test_code_python3.py 파일 보기

@@ -0,0 +1,18 @@
from core.helper.code_executor.code_executor import CodeExecutor

CODE_LANGUAGE = 'python3'


def test_python3_plain():
code = 'print("Hello World")'
result = CodeExecutor.execute_code(language=CODE_LANGUAGE, preload='', code=code)
assert result == 'Hello World\n'


def test_python3_json():
code = """
import json
print(json.dumps({'Hello': 'World'}))
"""
result = CodeExecutor.execute_code(language=CODE_LANGUAGE, preload='', code=code)
assert result == '{"Hello": "World"}\n'

Loading…
취소
저장