test: lock bridge diagnostic cluster constant
This commit is contained in:
@@ -141,6 +141,7 @@ TRAINING_M41_RELEASE_INDEX_GUARD_TEST_INVENTORY = (
|
||||
"test_training_m78_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_accepts_ordered_literal_sources",
|
||||
"test_training_m79_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_self_lock",
|
||||
"test_training_m80_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_negative_fixture_self_lock",
|
||||
"test_training_m81_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_constant_source_shape_self_lock",
|
||||
"test_training_m53_release_index_doc_category_coverage_is_exact",
|
||||
"test_training_case_product_doc_reflects_current_m40_maturity",
|
||||
)
|
||||
@@ -161,6 +162,13 @@ TRAINING_M41_RELEASE_INDEX_SOURCE_SHAPE_FIXTURE_GUARD_METHODS = (
|
||||
"test_training_m63_release_index_source_shape_fixture_guard_methods_constant_diagnostics_are_locked",
|
||||
"test_training_m64_release_index_source_shape_fixture_guard_methods_accept_valid_literal_sources",
|
||||
)
|
||||
TRAINING_M41_RELEASE_INDEX_DIAGNOSTIC_FIXTURE_INVENTORY_GUARD_CLUSTER = (
|
||||
"test_training_m74_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_self_lock",
|
||||
"test_training_m75_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_self_lock",
|
||||
"test_training_m76_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_rejects_dynamic_sources",
|
||||
"test_training_m77_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_edge_diagnostics_are_locked",
|
||||
"test_training_m78_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_accepts_ordered_literal_sources",
|
||||
)
|
||||
TRAINING_M41_RELEASE_INDEX_REQUIRED_SNIPPET_INVENTORY = (
|
||||
(
|
||||
"current_m1_m40_marker",
|
||||
@@ -671,6 +679,9 @@ class DocumentationConsistencyTests(unittest.TestCase):
|
||||
"required_snippet_inventory_source_shape_fixture_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_negative_fixture": (
|
||||
"test_training_m80_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_negative_fixture_self_lock"
|
||||
),
|
||||
"required_snippet_inventory_source_shape_fixture_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_constant_source_shape": (
|
||||
"test_training_m81_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_constant_source_shape_self_lock"
|
||||
),
|
||||
"per_doc_helper_exact_category_coverage": (
|
||||
"test_training_m53_release_index_doc_category_coverage_is_exact"
|
||||
),
|
||||
@@ -846,6 +857,7 @@ class DocumentationConsistencyTests(unittest.TestCase):
|
||||
"test_training_m78_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_accepts_ordered_literal_sources",
|
||||
"test_training_m79_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_self_lock",
|
||||
"test_training_m80_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_negative_fixture_self_lock",
|
||||
"test_training_m81_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_constant_source_shape_self_lock",
|
||||
"test_training_m53_release_index_doc_category_coverage_is_exact",
|
||||
"test_training_case_product_doc_reflects_current_m40_maturity",
|
||||
)
|
||||
@@ -2171,11 +2183,7 @@ class DocumentationConsistencyTests(unittest.TestCase):
|
||||
"test_training_m79_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_self_lock"
|
||||
)
|
||||
diagnostic_fixture_inventory_guard_cluster = (
|
||||
"test_training_m74_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_self_lock",
|
||||
"test_training_m75_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_self_lock",
|
||||
"test_training_m76_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_rejects_dynamic_sources",
|
||||
"test_training_m77_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_edge_diagnostics_are_locked",
|
||||
"test_training_m78_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_accepts_ordered_literal_sources",
|
||||
TRAINING_M41_RELEASE_INDEX_DIAGNOSTIC_FIXTURE_INVENTORY_GUARD_CLUSTER
|
||||
)
|
||||
module_source = Path(__file__).read_text(encoding="utf-8")
|
||||
module_tree = ast.parse(module_source)
|
||||
@@ -2265,11 +2273,7 @@ class DocumentationConsistencyTests(unittest.TestCase):
|
||||
"test_training_m80_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_negative_fixture_self_lock"
|
||||
)
|
||||
diagnostic_fixture_inventory_guard_cluster = (
|
||||
"test_training_m74_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_self_lock",
|
||||
"test_training_m75_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_self_lock",
|
||||
"test_training_m76_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_rejects_dynamic_sources",
|
||||
"test_training_m77_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_edge_diagnostics_are_locked",
|
||||
"test_training_m78_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_accepts_ordered_literal_sources",
|
||||
TRAINING_M41_RELEASE_INDEX_DIAGNOSTIC_FIXTURE_INVENTORY_GUARD_CLUSTER
|
||||
)
|
||||
base_inventory = TRAINING_M41_RELEASE_INDEX_GUARD_TEST_INVENTORY
|
||||
cluster_start = base_inventory.index(diagnostic_fixture_inventory_guard_cluster[0])
|
||||
@@ -2375,6 +2379,89 @@ class DocumentationConsistencyTests(unittest.TestCase):
|
||||
synthetic_inventory
|
||||
)
|
||||
|
||||
def test_training_m81_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_constant_source_shape_self_lock(
|
||||
self,
|
||||
) -> None:
|
||||
guard_name = (
|
||||
"test_training_m81_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_guard_cluster_constant_source_shape_self_lock"
|
||||
)
|
||||
constant_name = (
|
||||
"TRAINING_M41_RELEASE_INDEX_DIAGNOSTIC_FIXTURE_INVENTORY_GUARD_CLUSTER"
|
||||
)
|
||||
expected_cluster = (
|
||||
"test_training_m74_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_self_lock",
|
||||
"test_training_m75_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_self_lock",
|
||||
"test_training_m76_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_rejects_dynamic_sources",
|
||||
"test_training_m77_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_edge_diagnostics_are_locked",
|
||||
"test_training_m78_release_index_source_shape_fixture_guard_methods_constant_exactness_bridge_triplet_diagnostic_fixture_inventory_source_shape_accepts_ordered_literal_sources",
|
||||
)
|
||||
disallowed_source_node_types = (
|
||||
ast.Call,
|
||||
ast.Dict,
|
||||
ast.GeneratorExp,
|
||||
ast.List,
|
||||
ast.ListComp,
|
||||
ast.Name,
|
||||
ast.Set,
|
||||
ast.Starred,
|
||||
)
|
||||
module_tree = ast.parse(Path(__file__).read_text(encoding="utf-8"))
|
||||
|
||||
def assigns_constant(node: ast.AST) -> bool:
|
||||
if isinstance(node, ast.Assign):
|
||||
targets = node.targets
|
||||
elif isinstance(node, (ast.AnnAssign, ast.AugAssign)):
|
||||
targets = (node.target,)
|
||||
else:
|
||||
return False
|
||||
return any(
|
||||
isinstance(target, ast.Name) and target.id == constant_name
|
||||
for target in targets
|
||||
)
|
||||
|
||||
constant_assignments = tuple(
|
||||
node for node in module_tree.body if assigns_constant(node)
|
||||
)
|
||||
|
||||
self.assertIn(guard_name, TRAINING_M41_RELEASE_INDEX_GUARD_TEST_INVENTORY)
|
||||
self.assertEqual(len(constant_assignments), 1)
|
||||
constant_assignment = constant_assignments[0]
|
||||
self.assertIsInstance(constant_assignment, ast.Assign)
|
||||
self.assertEqual(len(constant_assignment.targets), 1)
|
||||
self.assertIsInstance(constant_assignment.targets[0], ast.Name)
|
||||
constant_source = constant_assignment.value
|
||||
self.assertIsInstance(constant_source, ast.Tuple)
|
||||
dynamic_source_node = next(
|
||||
(
|
||||
node
|
||||
for node in ast.walk(constant_source)
|
||||
if isinstance(node, disallowed_source_node_types)
|
||||
),
|
||||
None,
|
||||
)
|
||||
self.assertIsNone(
|
||||
dynamic_source_node,
|
||||
f"dynamic source node {type(dynamic_source_node).__name__}",
|
||||
)
|
||||
self.assertTrue(
|
||||
all(
|
||||
isinstance(method_node, ast.Constant)
|
||||
and isinstance(method_node.value, str)
|
||||
for method_node in constant_source.elts
|
||||
)
|
||||
)
|
||||
constant_cluster = tuple(method_node.value for method_node in constant_source.elts)
|
||||
|
||||
self.assertEqual(constant_cluster, expected_cluster)
|
||||
self.assertEqual(len(constant_cluster), 5)
|
||||
self.assertEqual(len(constant_cluster), len(set(constant_cluster)))
|
||||
for method_name in constant_cluster:
|
||||
with self.subTest(method_name=method_name):
|
||||
self.assertIn(
|
||||
method_name,
|
||||
TRAINING_M41_RELEASE_INDEX_GUARD_TEST_INVENTORY,
|
||||
)
|
||||
|
||||
def test_training_m47_release_index_per_doc_helper_inventory_self_lock_is_current(self) -> None:
|
||||
helper_name = "_release_index_missing_required_snippets_by_doc"
|
||||
docs_guard_name = "test_training_readmes_expose_m1_m40_release_index_without_raw_test_modules"
|
||||
|
||||
Reference in New Issue
Block a user