tests: add custom JSON encoder to for checker output

This commit is contained in:
HEL
2026-07-09 18:27:51 +02:00
parent 44963db425
commit f41dbb528c
+12 -1
View File
@@ -1,3 +1,4 @@
import ast
import json import json
from dataclasses import asdict, dataclass, field from dataclasses import asdict, dataclass, field
from pathlib import Path from pathlib import Path
@@ -6,17 +7,27 @@ import midas.ast.python as p
from midas.checker.checker import TypeChecker from midas.checker.checker import TypeChecker
from midas.checker.diagnostic import Diagnostic from midas.checker.diagnostic import Diagnostic
from midas.checker.types import Type from midas.checker.types import Type
from midas.lexer.token import TokenType
from tests.base import Tester from tests.base import Tester
from tests.serializer.python import PythonAstJsonSerializer from tests.serializer.python import PythonAstJsonSerializer
class CustomEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, ast.AST):
return ast.dump(o)
if isinstance(o, TokenType):
return o.name
return super().default(o)
@dataclass @dataclass
class CaseResult: class CaseResult:
diagnostics: list[dict] = field(default_factory=list) diagnostics: list[dict] = field(default_factory=list)
judgments: list = field(default_factory=list) judgments: list = field(default_factory=list)
def dumps(self) -> str: def dumps(self) -> str:
return json.dumps(asdict(self), indent=2) return json.dumps(asdict(self), indent=2, cls=CustomEncoder)
class CheckerTester(Tester): class CheckerTester(Tester):