39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
"""Tests for ARCH-RUNTIME-IMPORT."""
|
|
|
|
from support import ArchitectureFixture, RUNTIME_IMPORT, RUNTIME_RULE
|
|
|
|
|
|
class RuntimeImportTest(ArchitectureFixture):
|
|
def assert_new_import_is_reported(self, path: str, source: str, line: int) -> None:
|
|
self.write(path, source)
|
|
self.track_all()
|
|
|
|
result = self.run_cli("--all")
|
|
|
|
self.assertEqual(result.returncode, 1)
|
|
self.assert_diagnostic_location(result, path, line)
|
|
self.assertIn(RUNTIME_RULE, result.stdout)
|
|
|
|
def test_current_grandfathered_violation_passes(self) -> None:
|
|
path = "apps/backend/internal/example/service.go"
|
|
self.write(path, f'package example\n\nimport "{RUNTIME_IMPORT}"\n')
|
|
self.write_baseline(runtime=[self.runtime_entry(path)])
|
|
self.track_all()
|
|
|
|
result = self.run_cli("--all")
|
|
|
|
self.assertEqual(result.returncode, 0, result.stdout + result.stderr)
|
|
|
|
def test_new_import_reports_rule_location_and_migration_guidance(self) -> None:
|
|
path = "apps/backend/internal/example/new_service.go"
|
|
self.write(path, f'package example\n\nimport "{RUNTIME_IMPORT}"\n')
|
|
self.track_all()
|
|
|
|
result = self.run_cli("--all")
|
|
|
|
self.assertEqual(result.returncode, 1)
|
|
self.assert_diagnostic_location(result, path, 3)
|
|
self.assertIn(RUNTIME_RULE, result.stdout)
|
|
self.assertIn("internal/agent/runtime", result.stdout)
|
|
self.assertIn("approved low-level adapter", result.stdout)
|