Skip to content

Commit

Permalink
test: add integration tests on CodeExecutor with the sandbox service (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
bowenliang123 authored May 3, 2024
1 parent b1399cd commit 4485770
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 1 deletion.
8 changes: 8 additions & 0 deletions .github/workflows/api-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ jobs:
- name: Run Tool
run: dev/pytest/pytest_tools.sh

- name: Set up Sandbox
uses: hoverkraft-tech/[email protected]
with:
compose-file: |
docker/docker-compose.middleware.yaml
services: |
sandbox
- name: Run Workflow
run: dev/pytest/pytest_workflow.sh

Expand Down
4 changes: 3 additions & 1 deletion api/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Empty file.
Empty file.
Original file line number Diff line number Diff line change
@@ -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'
Original file line number Diff line number Diff line change
@@ -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'
Original file line number Diff line number Diff line change
@@ -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'

0 comments on commit 4485770

Please sign in to comment.