| from __future__ import annotations |
|
|
| import ast |
| import unittest |
| from pathlib import Path |
|
|
|
|
| APP_PATH = Path(__file__).resolve().parents[1] / "app.py" |
|
|
|
|
| def _load_tree() -> ast.Module: |
| return ast.parse(APP_PATH.read_text(encoding="utf-8")) |
|
|
|
|
| def _get_function(tree: ast.Module, name: str) -> ast.FunctionDef: |
| for node in tree.body: |
| if isinstance(node, ast.FunctionDef) and node.name == name: |
| return node |
| raise AssertionError(f"Function {name!r} not found in app.py") |
|
|
|
|
| def _called_names(function_node: ast.FunctionDef) -> set[str]: |
| names: set[str] = set() |
| for node in ast.walk(function_node): |
| if isinstance(node, ast.Call): |
| if isinstance(node.func, ast.Name): |
| names.add(node.func.id) |
| elif isinstance(node.func, ast.Attribute): |
| names.add(node.func.attr) |
| return names |
|
|
|
|
| class AppArchitectureTests(unittest.TestCase): |
| def test_default_page_load_no_longer_preprocesses_default_image(self) -> None: |
| source = APP_PATH.read_text(encoding="utf-8") |
|
|
| self.assertNotIn("demo.load(preprocess_default_image", source) |
|
|
| def test_preview_hdri_stays_off_heavy_model_loader_path(self) -> None: |
| preview_hdri = _get_function(_load_tree(), "preview_hdri") |
| called = _called_names(preview_hdri) |
|
|
| self.assertNotIn("ensure_near_pipeline", called) |
| self.assertNotIn("set_tone_mapper", called) |
| self.assertIn("ToneMapper", called) |
|
|
| def test_generate_mesh_only_uses_geometry_loader(self) -> None: |
| generate_mesh = _get_function(_load_tree(), "generate_mesh") |
| called = _called_names(generate_mesh) |
|
|
| self.assertIn("ensure_geometry_on_cuda", called) |
| self.assertNotIn("ensure_near_on_cuda", called) |
|
|
| def test_render_preview_calls_pipeline_render_view(self) -> None: |
| render_preview = _get_function(_load_tree(), "render_preview") |
| called = _called_names(render_preview) |
|
|
| self.assertIn("render_view", called) |
|
|
| def test_generate_slat_uses_near_cuda_loader(self) -> None: |
| generate_slat = _get_function(_load_tree(), "generate_slat") |
| called = _called_names(generate_slat) |
|
|
| self.assertIn("ensure_near_on_cuda", called) |
|
|
| def test_cpu_preload_is_blocking_before_launch_not_background_thread(self) -> None: |
| source = APP_PATH.read_text(encoding="utf-8") |
| near_launch = _get_function(_load_tree(), "_near_launch") |
| called = _called_names(near_launch) |
|
|
| self.assertIn("run_model_cpu_preload_blocking", called) |
| self.assertNotIn("start_model_cpu_preload_thread", source) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|