7e6f6fae37
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 12s
CI / build (pull_request) Successful in 15s
CI / quality (pull_request) Successful in 17s
CI / typecheck (pull_request) Successful in 31s
CI / security (pull_request) Successful in 31s
CI / unit_tests (pull_request) Successful in 1m46s
CI / docker (pull_request) Successful in 38s
CI / integration_tests (pull_request) Successful in 2m52s
CI / coverage (pull_request) Successful in 3m41s
CI / benchmark-regression (pull_request) Successful in 23m24s
CI / lint (push) Successful in 14s
CI / build (push) Successful in 15s
CI / quality (push) Successful in 17s
CI / typecheck (push) Successful in 33s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 35s
CI / unit_tests (push) Successful in 2m13s
CI / docker (push) Successful in 38s
CI / integration_tests (push) Successful in 2m58s
CI / coverage (push) Successful in 3m44s
CI / benchmark-publish (push) Successful in 13m19s
Add comprehensive semantic validation test suites covering five
new fixture categories: language porting mismatches, dependency
graph violations, API surface changes, cross-file symbols, and
circular import detection.
New BDD scenarios (38) exercise all six built-in rules against
fixture-driven inputs. Robot Framework integration tests (11)
validate end-to-end rule execution via the SemanticValidationService.
ASV benchmarks (6 suites) establish performance baselines for
batch validation throughput and per-rule latency.
Files added:
- features/fixtures/validation/{language_porting_mismatches,
dependency_graph_violations, api_surface_changes,
cross_file_symbols, circular_import_detection}.json
- features/semantic_validation_suite.feature
- features/steps/semantic_validation_suite_steps.py
- robot/semantic_validation_suite.robot
- robot/helper_semantic_validation_suite.py
- benchmarks/semantic_validation_suite_bench.py
- docs/reference/semantic_validation_coverage.md
All 11 nox sessions pass (lint, format, typecheck, security_scan,
dead_code, unit_tests, integration_tests, docs, build, benchmark,
coverage_report). Coverage remains at 97%.
ISSUES CLOSED: #316
63 lines
2.4 KiB
JSON
63 lines
2.4 KiB
JSON
{
|
|
"fixtures": [
|
|
{
|
|
"name": "duplicate_relative_imports",
|
|
"description": "Same relative import repeated — hints at circular dependency",
|
|
"source": "from . import utils\nfrom . import utils\n",
|
|
"filename": "module_a.py",
|
|
"expected_rule": "duplicate_import",
|
|
"expected_passed": false,
|
|
"expected_message_contains": "Duplicate relative imports",
|
|
"expected_data_contains": {"filename": "module_a.py"}
|
|
},
|
|
{
|
|
"name": "triple_relative_import_cycle",
|
|
"description": "Three identical relative imports — strong cycle indicator",
|
|
"source": "from . import core\nfrom . import core\nfrom . import core\n",
|
|
"filename": "module_b.py",
|
|
"expected_rule": "duplicate_import",
|
|
"expected_passed": false,
|
|
"expected_message_contains": "Duplicate relative imports",
|
|
"expected_data_contains": {"filename": "module_b.py"}
|
|
},
|
|
{
|
|
"name": "mixed_valid_imports",
|
|
"description": "Mix of absolute and unique relative imports — no violations",
|
|
"source": "import os\nimport sys\nfrom . import alpha\nfrom . import beta\n",
|
|
"filename": "clean_module.py",
|
|
"expected_rule": "duplicate_import",
|
|
"expected_passed": true,
|
|
"note": "All imports are unique"
|
|
},
|
|
{
|
|
"name": "private_module_import",
|
|
"description": "Import from a private underscore module not in stdlib",
|
|
"source": "import _nonexistent_internal_module\n",
|
|
"filename": "risky_import.py",
|
|
"expected_rule": "missing_import",
|
|
"expected_passed": false,
|
|
"expected_message_contains": "suspicious import",
|
|
"expected_data_contains": {"filename": "risky_import.py"}
|
|
},
|
|
{
|
|
"name": "from_private_module_import",
|
|
"description": "From-import from a private underscore module not in stdlib",
|
|
"source": "from _nonexistent_private_lib import helper\n",
|
|
"filename": "risky_from.py",
|
|
"expected_rule": "missing_import",
|
|
"expected_passed": false,
|
|
"expected_message_contains": "suspicious import",
|
|
"expected_data_contains": {"filename": "risky_from.py"}
|
|
},
|
|
{
|
|
"name": "valid_stdlib_private_import",
|
|
"description": "Private module that IS in stdlib — should pass",
|
|
"source": "import _thread\n",
|
|
"filename": "stdlib_private.py",
|
|
"expected_rule": "missing_import",
|
|
"expected_passed": true,
|
|
"note": "_thread is a valid stdlib module"
|
|
}
|
|
]
|
|
}
|