From e2d5943517993e5f0d738b4f6df14dedff3e7426 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Fri, 29 May 2026 18:39:25 +0200 Subject: [PATCH] tests: move midas parser tests in subfolder --- tests/base.py | 4 ++-- .../cases/{parser => midas-parser}/01_simple_types.midas | 0 .../01_simple_types.midas.ref.json | 8 ++++---- tests/midas.py | 9 ++++++--- .../ast/json_serializer.py => tests/serializer/midas.py | 4 ++-- 5 files changed, 14 insertions(+), 11 deletions(-) rename tests/cases/{parser => midas-parser}/01_simple_types.midas (100%) rename tests/cases/{parser => midas-parser}/01_simple_types.midas.ref.json (100%) rename midas/ast/json_serializer.py => tests/serializer/midas.py (98%) diff --git a/tests/base.py b/tests/base.py index 9596675..9b2f095 100644 --- a/tests/base.py +++ b/tests/base.py @@ -25,8 +25,8 @@ class Tester(ABC): def base_dir(self) -> Path: return self.CASES_DIR / self.namespace - def _list_tests(self) -> list[Path]: - return list(self.base_dir.rglob("*.midas")) + @abstractmethod + def _list_tests(self) -> list[Path]: ... def run_all_tests(self) -> bool: paths: list[Path] = self._list_tests() diff --git a/tests/cases/parser/01_simple_types.midas b/tests/cases/midas-parser/01_simple_types.midas similarity index 100% rename from tests/cases/parser/01_simple_types.midas rename to tests/cases/midas-parser/01_simple_types.midas diff --git a/tests/cases/parser/01_simple_types.midas.ref.json b/tests/cases/midas-parser/01_simple_types.midas.ref.json similarity index 100% rename from tests/cases/parser/01_simple_types.midas.ref.json rename to tests/cases/midas-parser/01_simple_types.midas.ref.json index 9c9aa5b..355b80e 100644 --- a/tests/cases/parser/01_simple_types.midas.ref.json +++ b/tests/cases/midas-parser/01_simple_types.midas.ref.json @@ -2170,8 +2170,8 @@ "stmts": [ { "_type": "SimpleTypeStmt", - "template": null, "name": "Custom", + "template": null, "base": { "_type": "TypeExpr", "name": "float", @@ -2182,8 +2182,8 @@ }, { "_type": "SimpleTypeStmt", - "template": null, "name": "Latitude", + "template": null, "base": { "_type": "TypeExpr", "name": "float", @@ -2219,8 +2219,8 @@ }, { "_type": "SimpleTypeStmt", - "template": null, "name": "Longitude", + "template": null, "base": { "_type": "TypeExpr", "name": "float", @@ -2256,6 +2256,7 @@ }, { "_type": "SimpleTypeStmt", + "name": "Difference", "template": { "_type": "TemplateExpr", "type": { @@ -2265,7 +2266,6 @@ "optional": false } }, - "name": "Difference", "base": { "_type": "TypeExpr", "name": "T", diff --git a/tests/midas.py b/tests/midas.py index 4e14332..4474976 100644 --- a/tests/midas.py +++ b/tests/midas.py @@ -3,13 +3,13 @@ from dataclasses import asdict, dataclass, field from pathlib import Path from typing import Optional -from midas.ast.json_serializer import AstJsonSerializer from midas.ast.midas import Stmt from midas.lexer.base import MidasSyntaxError from midas.lexer.midas import MidasLexer from midas.lexer.token import Token from midas.parser.midas import MidasParser from tests.base import Tester +from tests.serializer.midas import MidasAstJsonSerializer @dataclass @@ -25,7 +25,10 @@ class CaseResult: class MidasTester(Tester): @property def namespace(self) -> str: - return "parser" + return "midas-parser" + + def _list_tests(self) -> list[Path]: + return list(self.base_dir.rglob("*.midas")) def _exec_case(self, path: Path) -> CaseResult: if not path.exists(): @@ -61,7 +64,7 @@ class MidasTester(Tester): parser: MidasParser = MidasParser(tokens) stmts: list[Stmt] = parser.parse() - result.stmts = AstJsonSerializer().serialize(stmts) + result.stmts = MidasAstJsonSerializer().serialize(stmts) result.errors.extend( [ { diff --git a/midas/ast/json_serializer.py b/tests/serializer/midas.py similarity index 98% rename from midas/ast/json_serializer.py rename to tests/serializer/midas.py index d602117..0991334 100644 --- a/midas/ast/json_serializer.py +++ b/tests/serializer/midas.py @@ -23,7 +23,7 @@ from midas.ast.midas import ( ) -class AstJsonSerializer(Stmt.Visitor[dict], Expr.Visitor[dict]): +class MidasAstJsonSerializer(Stmt.Visitor[dict], Expr.Visitor[dict]): """An AST serializer which produces a JSON-compatible structure""" def serialize(self, stmts: list[Stmt]) -> list[dict]: @@ -40,8 +40,8 @@ class AstJsonSerializer(Stmt.Visitor[dict], Expr.Visitor[dict]): def visit_simple_type_stmt(self, stmt: SimpleTypeStmt) -> dict: return { "_type": "SimpleTypeStmt", - "template": self._serialize_optional(stmt.template), "name": stmt.name.lexeme, + "template": self._serialize_optional(stmt.template), "base": stmt.base.accept(self), "constraint": self._serialize_optional(stmt.constraint), }