Skip to main content
Glama

Django MCP Server

test_output.py3.69 kB
from __future__ import annotations import traceback from mcp_django.output import DjangoShellOutput from mcp_django.output import ErrorOutput from mcp_django.output import ExceptionOutput from mcp_django.output import ExecutionStatus from mcp_django.output import ExpressionOutput from mcp_django.shell import ErrorResult from mcp_django.shell import ExpressionResult def test_django_shell_output_from_expression_result(): result = ExpressionResult( code="2 + 2", value=4, stdout="", stderr="", ) output = DjangoShellOutput.from_result(result) assert output.status == ExecutionStatus.SUCCESS assert isinstance(output.output, ExpressionOutput) assert output.output.value == 4 assert output.output.value_type is int def test_expression_with_none_value(): result = ExpressionResult( code="None", value=None, stdout="", stderr="", ) output = DjangoShellOutput.from_result(result) assert output.status == ExecutionStatus.SUCCESS assert isinstance(output.output, ExpressionOutput) serialized = output.output.model_dump(mode="json") assert serialized["value"] == "None" assert serialized["value_type"] == "NoneType" def test_django_shell_output_from_error_result(): exc = ZeroDivisionError("division by zero") result = ErrorResult( code="1 / 0", exception=exc, stdout="", stderr="", ) output = DjangoShellOutput.from_result(result) assert output.status == ExecutionStatus.ERROR assert isinstance(output.output, ErrorOutput) assert output.output.exception.exc_type is ZeroDivisionError assert "division by zero" in output.output.exception.message def test_exception_output_serialization(): exc = ValueError("test error") exc_output = ExceptionOutput( exc_type=type(exc), message=str(exc), traceback=None, # needs to be None since we didn't actually raise it ) serialized = exc_output.model_dump(mode="json") assert serialized["exc_type"] == "ValueError" assert serialized["message"] == "test error" assert serialized["traceback"] == [] def test_exception_output_with_real_traceback(): try: _ = 1 / 0 except ZeroDivisionError as e: exc_output = ExceptionOutput( exc_type=type(e), message=str(e), traceback=e.__traceback__, ) serialized = exc_output.model_dump(mode="json") assert serialized["exc_type"] == "ZeroDivisionError" assert "division by zero" in serialized["message"] assert isinstance(serialized["traceback"], list) assert len(serialized["traceback"]) > 0 assert any("1 / 0" in line for line in serialized["traceback"]) assert not any("mcp_django" in line for line in serialized["traceback"]) def test_traceback_filtering(): # Create a function that will appear in the traceback def mcp_django_function(): raise ValueError("test error") try: mcp_django_function() except ValueError as e: exc_output = ExceptionOutput( exc_type=type(e), message=str(e), traceback=e.__traceback__, ) assert any( "mcp_django_function" in line for line in traceback.format_tb(e.__traceback__) ) serialized = exc_output.model_dump(mode="json") assert len(serialized["traceback"]) == 0 or not any( "mcp_django/shell" in line or "mcp_django/code" in line or "mcp_django/output" in line for line in serialized["traceback"] )

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/joshuadavidthomas/mcp-django'

If you have feedback or need assistance with the MCP directory API, please join our Discord server