forked from wrenn/python-sdk
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from __future__ import annotations
|
|
|
|
from wrenn.client import WrennClient
|
|
|
|
from .conftest import requires_auth
|
|
|
|
|
|
@requires_auth
|
|
class TestRunCode:
|
|
def test_basic_execution(self, client: WrennClient):
|
|
with client.capsules.create(
|
|
template="python-interpreter-v0-beta", timeout_sec=120
|
|
) as cap:
|
|
cap.wait_ready(timeout=60, interval=1)
|
|
|
|
r = cap.run_code("x = 42")
|
|
assert r.error is None
|
|
|
|
r = cap.run_code("x * 2")
|
|
assert r.text == "84"
|
|
|
|
def test_state_persists(self, client: WrennClient):
|
|
with client.capsules.create(
|
|
template="python-interpreter-v0-beta", timeout_sec=120
|
|
) as cap:
|
|
cap.wait_ready(timeout=60, interval=1)
|
|
|
|
cap.run_code("def greet(name): return f'hello {name}'")
|
|
r = cap.run_code("greet('capsule')")
|
|
assert "hello capsule" in (r.text or "")
|
|
|
|
def test_error_traceback(self, client: WrennClient):
|
|
with client.capsules.create(
|
|
template="python-interpreter-v0-beta", timeout_sec=120
|
|
) as cap:
|
|
cap.wait_ready(timeout=60, interval=1)
|
|
|
|
r = cap.run_code("1/0")
|
|
assert r.error is not None
|
|
assert "ZeroDivisionError" in r.error
|
|
|
|
def test_stdout_capture(self, client: WrennClient):
|
|
with client.capsules.create(
|
|
template="python-interpreter-v0-beta", timeout_sec=120
|
|
) as cap:
|
|
cap.wait_ready(timeout=60, interval=1)
|
|
|
|
r = cap.run_code("print('hello from kernel')")
|
|
assert "hello from kernel" in r.stdout
|