Simplify test suite to pytest unit scaffolding

This commit is contained in:
Arnav Sacheti
2025-10-19 16:48:25 -07:00
parent bb1ac6bde9
commit cca98098da
176 changed files with 71 additions and 7599 deletions

51
tests/unit/conftest.py Normal file
View File

@@ -0,0 +1,51 @@
"""Pytest fixtures for unit tests."""
from __future__ import annotations
from pathlib import Path
from tempfile import NamedTemporaryFile
from typing import Iterable, Mapping, Optional
import pytest
from systemrdl import RDLCompileError, RDLCompiler
@pytest.fixture
def compile_rdl(tmp_path: Path):
"""Compile inline SystemRDL source and return the elaborated root node.
Parameters
----------
tmp_path:
Temporary directory provided by pytest.
"""
def _compile(
source: str,
*,
top: Optional[str] = None,
defines: Optional[Mapping[str, object]] = None,
include_paths: Optional[Iterable[Path | str]] = None,
):
compiler = RDLCompiler()
for key, value in (defines or {}).items():
compiler.define(key, value)
for include_path in include_paths or ():
compiler.add_include_path(str(include_path))
with NamedTemporaryFile("w", suffix=".rdl", dir=tmp_path) as tmp_file:
tmp_file.write(source)
tmp_file.flush()
try:
compiler.compile_file(tmp_file.name)
if top is not None:
return compiler.elaborate(top)
return compiler.elaborate()
except RDLCompileError:
compiler.print_messages()
raise
return _compile