Skip to content

Commit 355ed52

Browse files
Add extension parse usage boundary architecture guard
Co-authored-by: Shri Sukhani <shrisukhani@users.noreply.github.com>
1 parent 30f8ad2 commit 355ed52

3 files changed

Lines changed: 28 additions & 0 deletions

File tree

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ This runs lint, format checks, compile checks, tests, and package build.
109109
- `tests/test_examples_syntax.py` (example script syntax guardrail),
110110
- `tests/test_extension_create_helper_usage.py` (extension create-input normalization helper usage enforcement),
111111
- `tests/test_extension_operation_metadata_usage.py` (extension manager operation-metadata usage enforcement),
112+
- `tests/test_extension_parse_usage_boundary.py` (centralized extension list parse-helper usage boundary enforcement),
112113
- `tests/test_extension_request_helper_usage.py` (extension manager request-helper usage enforcement),
113114
- `tests/test_extension_request_internal_reuse.py` (extension request-helper internal reuse of shared model request helpers),
114115
- `tests/test_extension_route_constants_usage.py` (extension manager route-constant usage enforcement),

tests/test_architecture_marker_usage.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
"tests/test_extract_payload_helper_usage.py",
6666
"tests/test_examples_naming_convention.py",
6767
"tests/test_extension_operation_metadata_usage.py",
68+
"tests/test_extension_parse_usage_boundary.py",
6869
"tests/test_extension_request_helper_usage.py",
6970
"tests/test_extension_request_internal_reuse.py",
7071
"tests/test_extension_route_constants_usage.py",
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from pathlib import Path
2+
3+
import pytest
4+
5+
pytestmark = pytest.mark.architecture
6+
7+
8+
ALLOWED_PARSE_EXTENSION_LIST_RESPONSE_DATA_MODULES = {
9+
"hyperbrowser/client/managers/extension_request_utils.py",
10+
"hyperbrowser/client/managers/extension_utils.py",
11+
}
12+
13+
14+
def test_parse_extension_list_response_data_usage_is_centralized():
15+
violating_modules: list[str] = []
16+
for module_path in sorted(
17+
Path("hyperbrowser/client/managers").rglob("*.py")
18+
):
19+
module_text = module_path.read_text(encoding="utf-8")
20+
if "parse_extension_list_response_data(" not in module_text:
21+
continue
22+
normalized_path = module_path.as_posix()
23+
if normalized_path not in ALLOWED_PARSE_EXTENSION_LIST_RESPONSE_DATA_MODULES:
24+
violating_modules.append(normalized_path)
25+
26+
assert violating_modules == []

0 commit comments

Comments
 (0)