diff --git a/pyproject.toml b/pyproject.toml index c8f5d1a..ba7402e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "wrenn" -version = "0.1.1" +version = "0.1.4" description = "Python SDK for Wrenn" readme = "README.md" license = "MIT" diff --git a/src/wrenn/__init__.py b/src/wrenn/__init__.py index 1ae84ae..0c4cb64 100644 --- a/src/wrenn/__init__.py +++ b/src/wrenn/__init__.py @@ -37,7 +37,7 @@ from wrenn.exceptions import ( from wrenn.models import FileEntry from wrenn.pty import AsyncPtySession, PtyEvent, PtyEventType, PtySession -__version__ = "0.1.0" +__version__ = "0.1.4" __all__ = [ "__version__", diff --git a/tests/test_integration.py b/tests/test_integration.py index d280d2c..23c10cd 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -15,6 +15,17 @@ pytestmark = pytest.mark.integration _env_loaded = False +def _wait_for_pid_dead(capsule: Capsule, pid: int, timeout: float = 5.0) -> bool: + deadline = time.monotonic() + timeout + while time.monotonic() < deadline: + result = capsule.commands.run(f"ps -p {pid} -o stat= 2>/dev/null || true") + state = result.stdout.strip() + if not state or state.startswith("Z"): + return True + time.sleep(0.2) + return False + + def _ensure_env() -> None: global _env_loaded if _env_loaded: @@ -218,11 +229,7 @@ class TestCommands: def test_kill_process(self): handle = self.capsule.commands.run("sleep 30", background=True) self.capsule.commands.kill(handle.pid) - time.sleep(0.5) - - processes = self.capsule.commands.list() - pids = [p.pid for p in processes] - assert handle.pid not in pids + assert _wait_for_pid_dead(self.capsule, handle.pid) def test_run_duration_ms(self): result = self.capsule.commands.run("sleep 1") diff --git a/uv.lock b/uv.lock index 36aea7d..097de50 100644 --- a/uv.lock +++ b/uv.lock @@ -1121,7 +1121,7 @@ wheels = [ [[package]] name = "wrenn" -version = "0.1.1" +version = "0.1.4" source = { editable = "." } dependencies = [ { name = "email-validator" },