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

This commit is contained in:
Bowen Liang 2024-05-03 08:54:40 +08:00 committed by GitHub
parent b1399cd5f9
commit 44857702ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 61 additions and 1 deletions

View File

@ -39,6 +39,14 @@ jobs:
- name: Run Tool - name: Run Tool
run: dev/pytest/pytest_tools.sh 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 - name: Run Workflow
run: dev/pytest/pytest_workflow.sh run: dev/pytest/pytest_workflow.sh

View File

@ -55,4 +55,6 @@ HUGGINGFACE_TEXT_GEN_ENDPOINT_URL = "a"
HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL = "b" HUGGINGFACE_TEXT2TEXT_GEN_ENDPOINT_URL = "b"
HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL = "c" HUGGINGFACE_EMBEDDINGS_ENDPOINT_URL = "c"
MOCK_SWITCH = "true" 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"

View File

@ -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'

View File

@ -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'

View File

@ -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'