Skip to content

Commit 4c6cb93

Browse files
Add extension key-display import boundary guard
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 6c78308 commit 4c6cb93

4 files changed

Lines changed: 29 additions & 0 deletions

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ This runs lint, format checks, compile checks, tests, and package build.
132132
- `tests/test_extension_create_helper_usage.py` (extension create-input normalization helper usage enforcement),
133133
- `tests/test_extension_create_metadata_usage.py` (extension create-helper shared operation-metadata prefix usage enforcement),
134134
- `tests/test_extension_key_display_helper_usage.py` (extension missing-key display helper usage enforcement),
135+
- `tests/test_extension_key_display_import_boundary.py` (extension key-display helper import boundary enforcement),
135136
- `tests/test_extension_operation_metadata_import_boundary.py` (extension operation-metadata import boundary enforcement),
136137
- `tests/test_extension_operation_metadata_usage.py` (extension manager operation-metadata usage enforcement),
137138
- `tests/test_extension_parse_usage_boundary.py` (centralized extension list parse-helper usage boundary enforcement),

tests/test_architecture_marker_usage.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
"tests/test_extension_operation_metadata_usage.py",
109109
"tests/test_extension_parse_usage_boundary.py",
110110
"tests/test_extension_key_display_helper_usage.py",
111+
"tests/test_extension_key_display_import_boundary.py",
111112
"tests/test_extension_request_function_parse_boundary.py",
112113
"tests/test_extension_request_helper_usage.py",
113114
"tests/test_extension_request_internal_reuse.py",

tests/test_display_utils_import_boundary.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
EXPECTED_EXTRA_IMPORTERS = (
1414
"tests/test_display_utils.py",
1515
"tests/test_display_utils_import_boundary.py",
16+
"tests/test_extension_key_display_import_boundary.py",
1617
)
1718

1819

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import ast
2+
from pathlib import Path
3+
4+
import pytest
5+
6+
pytestmark = pytest.mark.architecture
7+
8+
9+
EXTENSION_UTILS_MODULE = Path("hyperbrowser/client/managers/extension_utils.py")
10+
11+
12+
def _imports_format_string_key_for_error(module_text: str) -> bool:
13+
module_ast = ast.parse(module_text)
14+
for node in module_ast.body:
15+
if not isinstance(node, ast.ImportFrom):
16+
continue
17+
if node.module != "hyperbrowser.display_utils":
18+
continue
19+
if any(alias.name == "format_string_key_for_error" for alias in node.names):
20+
return True
21+
return False
22+
23+
24+
def test_extension_key_display_helper_is_imported_from_display_utils():
25+
module_text = EXTENSION_UTILS_MODULE.read_text(encoding="utf-8")
26+
assert _imports_format_string_key_for_error(module_text)

0 commit comments

Comments
 (0)