Files
cleveragents-core/features/semantic_validation_suite.feature

201 lines
9.6 KiB
Gherkin

Feature: Semantic validation suite fixtures
As a plan executor
I want semantic validation suites covering porting mismatches, dependency violations,
API surface changes, cross-file symbols, and duplicate relative import detection
So that error patterns are caught and categorised before code reaches production
Background:
Given a semantic validation suite test environment
# ── Language-porting mismatches ─────────────────────────────────
Scenario: Porting fixture list_comprehension_side_effect passes api_misuse rule
Given the porting fixture "list_comprehension_side_effect"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Porting fixture dynamic_attribute_access passes broken_reference rule
Given the porting fixture "dynamic_attribute_access"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Porting fixture multiple_inheritance_diamond passes syntax_error rule
Given the porting fixture "multiple_inheritance_diamond"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Porting fixture metaclass_usage passes syntax_error rule
Given the porting fixture "metaclass_usage"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Porting fixture unpacking_star_expression passes broken_reference rule
Given the porting fixture "unpacking_star_expression"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Porting fixture walrus_operator passes syntax_error rule
Given the porting fixture "walrus_operator"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Porting fixture eval_in_porting_context fails api_misuse rule
Given the porting fixture "eval_in_porting_context"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Porting fixture exec_for_code_generation fails api_misuse rule
Given the porting fixture "exec_for_code_generation"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
# ── Dependency graph violations ─────────────────────────────────
Scenario: Dependency fixture duplicate_relative_imports fails duplicate_import rule
Given the dependency fixture "duplicate_relative_imports"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Dependency fixture triple_relative_import_cycle fails duplicate_import rule
Given the dependency fixture "triple_relative_import_cycle"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Dependency fixture mixed_valid_imports passes duplicate_import rule
Given the dependency fixture "mixed_valid_imports"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Dependency fixture private_module_import fails missing_import rule
Given the dependency fixture "private_module_import"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Dependency fixture from_private_module_import fails missing_import rule
Given the dependency fixture "from_private_module_import"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Dependency fixture valid_stdlib_private_import passes missing_import rule
Given the dependency fixture "valid_stdlib_private_import"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
# ── API surface changes ─────────────────────────────────────────
Scenario: API fixture renamed_function_reference fails broken_reference rule
Given the API surface fixture "renamed_function_reference"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: API fixture missing_symbol_in_function fails missing_symbol rule
Given the API surface fixture "missing_symbol_in_function"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: API fixture incompatible_type_usage fails broken_reference rule
Given the API surface fixture "incompatible_type_usage"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: API fixture valid_api_usage passes broken_reference rule
Given the API surface fixture "valid_api_usage"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: API fixture class_method_missing_symbol fails missing_symbol rule
Given the API surface fixture "class_method_missing_symbol"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: API fixture eval_based_dynamic_call fails api_misuse rule
Given the API surface fixture "eval_based_dynamic_call"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: API fixture aliased_pickle_not_caught documents known limitation
Given the API surface fixture "aliased_pickle_not_caught"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: API fixture from_import_alias_not_caught documents known limitation
Given the API surface fixture "from_import_alias_not_caught"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
# ── Cross-file symbol resolution ────────────────────────────────
Scenario: Cross-file fixture undefined_cross_module_reference fails broken_reference rule
Given the cross-file fixture "undefined_cross_module_reference"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Cross-file fixture properly_imported_cross_module passes broken_reference rule
Given the cross-file fixture "properly_imported_cross_module"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Cross-file fixture nested_function_scoped_symbol passes missing_symbol rule
Given the cross-file fixture "nested_function_scoped_symbol"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Cross-file fixture undefined_in_class_method fails missing_symbol rule
Given the cross-file fixture "undefined_in_class_method"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Cross-file fixture wildcard_import_symbol fails broken_reference rule
Given the cross-file fixture "wildcard_import_symbol"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Cross-file fixture deeply_nested_closure passes missing_symbol rule
Given the cross-file fixture "deeply_nested_closure"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
# ── Duplicate relative import detection ─────────────────────────
Scenario: Duplicate import fixture direct_circular_import fails duplicate_import rule
Given the circular import fixture "direct_circular_import"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Duplicate import fixture multiple_self_references fails duplicate_import rule
Given the circular import fixture "multiple_self_references"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Duplicate import fixture clean_relative_imports passes duplicate_import rule
Given the circular import fixture "clean_relative_imports"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Duplicate import fixture absolute_imports_not_flagged passes duplicate_import rule
Given the circular import fixture "absolute_imports_not_flagged"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
Scenario: Duplicate import fixture syntax_error_skips_check passes duplicate_import rule
Given the circular import fixture "syntax_error_skips_cycle_check"
When the suite runs the expected rule
Then the suite result matches the fixture expectation
# ── Full suite validation ───────────────────────────────────────
Scenario: All porting fixtures load and validate schema
Then all porting fixtures load without error
Scenario: All dependency fixtures load and validate schema
Then all dependency fixtures load without error
Scenario: All API surface fixtures load and validate schema
Then all API surface fixtures load without error
Scenario: All cross-file fixtures load and validate schema
Then all cross-file fixtures load without error
Scenario: All circular import fixtures load and validate schema
Then all circular import fixtures load without error