Files
ipython-demo/tests/test_info.py
T
2026-08-30 10:25:26 +07:00

49 lines
1.5 KiB
Python

import unittest
from fastapi.testclient import TestClient
from ipython_mcp.app import app as mcp_app
from ipython_shell import App, AppInfo
from ipython_webapp.app import app as web_app
from langchain_demo.ipython_wrapper import get_app_info
class AppInfoTests(unittest.IsolatedAsyncioTestCase):
def test_app_info_describes_runtime_and_updates_after_execution(self):
app = App()
before = app.info()
self.assertIsInstance(before, AppInfo)
self.assertEqual(before.shell_count, 0)
self.assertIsNone(before.last_shell)
self.assertEqual(before.total_calls, 0)
self.assertGreaterEqual(before.uptime_seconds, 0)
app.run_code("1 + 1", shell_name="info-test")
after = app.info()
self.assertEqual(after.shell_count, 1)
self.assertEqual(after.last_shell, "info-test")
self.assertEqual(after.total_calls, 1)
self.assertGreaterEqual(after.uptime_seconds, before.uptime_seconds)
def test_web_app_exposes_info(self):
response = TestClient(web_app).get("/info")
self.assertEqual(response.status_code, 200)
self.assertIsInstance(response.json()["shell_count"], int)
async def test_mcp_app_exposes_info_tool(self):
tools = await mcp_app.list_tools()
self.assertIn("get_app_info", {tool.name for tool in tools})
def test_langchain_exposes_info_tool(self):
result = get_app_info.invoke({})
self.assertIsInstance(result, AppInfo)
if __name__ == "__main__":
unittest.main()