Agent KB_tests_p2 - grisuno/ReadMenator GitHub Wiki
Subsystem: tests (page 2 of 4)
Previous: KB_tests.md
tests/test_diagrams.py
- Doc: Contract tests for interactive system maps.
- Layer: testing
- Language: py
- Symbols:
TestSystemMapBuilderContract(class, line 30)class TestSystemMapBuilderContract(TestCase)TestSystemMapValidatorContract(class, line 176)class TestSystemMapValidatorContract(TestCase)TestInteractiveMapRendererContract(class, line 237)class TestInteractiveMapRendererContract(TestCase)TestDocsSitePublisherContract(class, line 367)class TestDocsSitePublisherContract(TestCase)TestVisNetworkRendererContract(class, line 528)class TestVisNetworkRendererContract(TestCase)TestDiagramVariantsContract(class, line 668)class TestDiagramVariantsContract(TestCase)setUp(method, line 33)def setUp(self)_make_graph(method, line 38)def _make_graph(self)test_builder_supports_five_kinds(method, line 52)def test_builder_supports_five_kinds(self)test_builder_produces_all_kinds(method, line 59)def test_builder_produces_all_kinds(self)test_builder_is_deterministic(method, line 68)def test_builder_is_deterministic(self)test_builder_orders_links_deterministically(method, line 80)def test_builder_orders_links_deterministically(self)test_builder_validates_large_graph_for_all_kinds(method, line 101)def test_builder_validates_large_graph_for_all_kinds(self)test_builder_reports_total_scope(method, line 119)def test_builder_reports_total_scope(self)test_builder_attaches_symbols_and_docs(method, line 126)def test_builder_attaches_symbols_and_docs(self)test_builder_truncates_symbols_per_node(method, line 143)def test_builder_truncates_symbols_per_node(self)test_builder_truncates_to_configured_limit(method, line 152)def test_builder_truncates_to_configured_limit(self)test_compare_reports_added_removed_rerouted(method, line 162)def test_compare_reports_added_removed_rerouted(self)setUp(method, line 179)def setUp(self)_valid_map(method, line 184)def _valid_map(self)test_validator_passes_valid_map(method, line 197)def test_validator_passes_valid_map(self)test_validator_rejects_duplicate_node_ids(method, line 204)def test_validator_rejects_duplicate_node_ids(self)test_validator_rejects_dangling_edge(method, line 214)def test_validator_rejects_dangling_edge(self)test_validator_rejects_empty_map(method, line 222)def test_validator_rejects_empty_map(self)test_validator_rejects_unknown_kind(method, line 228)def test_validator_rejects_unknown_kind(self)setUp(method, line 240)def setUp(self)_map(method, line 246)def _map(self, kind)test_renderer_produces_standalone_document(method, line 256)def test_renderer_produces_standalone_document(self)test_renderer_never_uses_inner_html(method, line 263)def test_renderer_never_uses_inner_html(self)test_renderer_has_no_external_requests(method, line 270)def test_renderer_has_no_external_requests(self)test_renderer_includes_interaction_controls(method, line 277)def test_renderer_includes_interaction_controls(self)test_renderer_includes_keyboard_and_deep_links(method, line 283)def test_renderer_includes_keyboard_and_deep_links(self)test_renderer_escapes_malicious_labels(method, line 292)def test_renderer_escapes_malicious_labels(self)test_renderer_embeds_valid_json_payloads(method, line 305)def test_renderer_embeds_valid_json_payloads(self)test_renderer_covers_all_five_kinds(method, line 314)def test_renderer_covers_all_five_kinds(self)test_renderer_links_gallery_home_when_configured(method, line 321)def test_renderer_links_gallery_home_when_configured(self)test_renderer_omits_gallery_home_by_default(method, line 328)def test_renderer_omits_gallery_home_by_default(self)test_renderer_keeps_canvas_distinct_from_nodes(method, line 333)def test_renderer_keeps_canvas_distinct_from_nodes(self)test_renderer_supports_drag_and_settle(method, line 341)def test_renderer_supports_drag_and_settle(self)test_renderer_sanitizes_viewer_state_on_export(method, line 349)def test_renderer_sanitizes_viewer_state_on_export(self)test_renderer_buttons_explain_their_purpose(method, line 355)def test_renderer_buttons_explain_their_purpose(self)setUp(method, line 370)def setUp(self)_maps(method, line 376)def _maps(self)test_publish_writes_index_plus_five_maps(method, line 386)def test_publish_writes_index_plus_five_maps(self)test_publish_index_links_every_map(method, line 397)def test_publish_index_links_every_map(self)test_publish_output_has_no_external_requests(method, line 406)def test_publish_output_has_no_external_requests(self)test_publish_footer_links_github_and_pypi(method, line 423)def test_publish_footer_links_github_and_pypi(self)test_publish_is_deterministic(method, line 437)def test_publish_is_deterministic(self)test_publish_escapes_malicious_project_name(method, line 448)def test_publish_escapes_malicious_project_name(self)test_publish_escapes_malicious_stat_keys(method, line 457)def test_publish_escapes_malicious_stat_keys(self)test_publish_skips_invalid_maps(method, line 468)def test_publish_skips_invalid_maps(self)test_publish_empty_maps_writes_empty_gallery(method, line 480)def test_publish_empty_maps_writes_empty_gallery(self)test_publish_leaves_input_maps_unmodified(method, line 489)def test_publish_leaves_input_maps_unmodified(self)test_publish_flat_subdir_keeps_links_relative(method, line 498)def test_publish_flat_subdir_keeps_links_relative(self)test_publish_index_explains_how_to_read(method, line 511)def test_publish_index_explains_how_to_read(self)test_publish_card_reports_primary_scope(method, line 519)def test_publish_card_reports_primary_scope(self)setUp(method, line 531)def setUp(self)_map(method, line 537)def _map(self, kind)test_renderers_ignore_placeholders_inside_payload_text(method, line 547)def test_renderers_ignore_placeholders_inside_payload_text(self)test_renderer_ships_edge_actions(method, line 564)def test_renderer_ships_edge_actions(self)test_renderer_uses_configured_cdn_urls(method, line 570)def test_renderer_uses_configured_cdn_urls(self)test_renderer_builds_vis_network_with_physics(method, line 583)def test_renderer_builds_vis_network_with_physics(self)test_renderer_links_gallery_home_when_configured(method, line 591)def test_renderer_links_gallery_home_when_configured(self)test_renderer_disables_physics_from_config(method, line 599)def test_renderer_disables_physics_from_config(self)test_renderer_escapes_malicious_titles(method, line 606)def test_renderer_escapes_malicious_titles(self)test_renderer_exposes_reader_controls(method, line 619)def test_renderer_exposes_reader_controls(self)test_renderer_is_deterministic(method, line 625)def test_renderer_is_deterministic(self)test_renderer_embeds_valid_payloads(method, line 630)def test_renderer_embeds_valid_payloads(self)test_renderer_documents_symbols_per_file(method, line 638)def test_renderer_documents_symbols_per_file(self)test_renderer_escapes_malicious_symbol_docs(method, line 654)def test_renderer_escapes_malicious_symbol_docs(self)_project(method, line 671)def _project(self, tmp)test_export_diagrams_writes_vis_maps_by_default(method, line 676)def test_export_diagrams_writes_vis_maps_by_default(self)test_export_diagrams_falls_back_offline_when_disabled(method, line 690)def test_export_diagrams_falls_back_offline_when_disabled(self)
- Depends on:
readmenator/_app.py,readmenator/_config.py,readmenator/_diagrams.py,readmenator/_models.py
tests/test_documentation.py
- Layer: testing
- Language: py
- Symbols:
TestDocumentationGeneratorContract(class, line 17)class TestDocumentationGeneratorContract(TestCase)setUp(method, line 18)def setUp(self)test_contains_header(method, line 22)def test_contains_header(self)test_contains_metadata_line(method, line 26)def test_contains_metadata_line(self)test_contains_mermaid_block(method, line 32)def test_contains_mermaid_block(self)test_contains_architecture_reference(method, line 37)def test_contains_architecture_reference(self)test_contains_cpg_block(method, line 41)def test_contains_cpg_block(self)test_contains_statistics_dashboard(method, line 46)def test_contains_statistics_dashboard(self)test_groups_files_by_language(method, line 51)def test_groups_files_by_language(self)test_lists_symbols_under_file(method, line 70)def test_lists_symbols_under_file(self)test_class_symbol_is_pluralized_correctly(method, line 83)def test_class_symbol_is_pluralized_correctly(self)test_function_pluralization(method, line 97)def test_function_pluralization(self)test_method_pluralization(method, line 109)def test_method_pluralization(self)test_shows_no_symbols_for_empty_files(method, line 121)def test_shows_no_symbols_for_empty_files(self)test_includes_file_path(method, line 132)def test_includes_file_path(self)test_docstring_in_output(method, line 143)def test_docstring_in_output(self)test_truncation_note_when_limited(method, line 155)def test_truncation_note_when_limited(self)test_taint_propagation_section_present(method, line 165)def test_taint_propagation_section_present(self)test_hotspot_section_present(method, line 185)def test_hotspot_section_present(self)test_no_taint_section_when_empty(method, line 203)def test_no_taint_section_when_empty(self)test_no_hotspot_section_when_empty(method, line 207)def test_no_hotspot_section_when_empty(self)test_cpg_block_disabled_via_config(method, line 211)def test_cpg_block_disabled_via_config(self)test_architectural_layers_section(method, line 217)def test_architectural_layers_section(self)test_security_findings_section(method, line 229)def test_security_findings_section(self)test_context_budget_zero_returns_full_content(method, line 252)def test_context_budget_zero_returns_full_content(self)test_context_budget_returns_compact_summary(method, line 260)def test_context_budget_returns_compact_summary(self)test_context_budget_prioritizes_god_nodes(method, line 268)def test_context_budget_prioritizes_god_nodes(self)test_context_budget_truncates_at_limit(method, line 285)def test_context_budget_truncates_at_limit(self)test_context_budget_includes_security_findings(method, line 293)def test_context_budget_includes_security_findings(self)
- Depends on:
readmenator/_config.py,readmenator/_documentation.py,readmenator/_models.py
tests/test_exporter.py
- Doc: Contract tests for the GraphExporter.
- Layer: testing
- Language: py
- Symbols:
TestGraphExporterContract(class, line 23)class TestGraphExporterContract(TestCase)setUp(method, line 26)def setUp(self)_make_node(method, line 30)def _make_node(self, nid, label, lang, symbols)_make_sym(method, line 42)def _make_sym(self, name, kind, line)test_to_json_produces_valid_json(method, line 47)def test_to_json_produces_valid_json(self)test_to_json_includes_symbol_data(method, line 56)def test_to_json_includes_symbol_data(self)test_to_json_includes_metadata(method, line 65)def test_to_json_includes_metadata(self)test_to_json_includes_analysis_metadata(method, line 76)def test_to_json_includes_analysis_metadata(self)test_to_html_produces_standalone_page(method, line 101)def test_to_html_produces_standalone_page(self)test_to_html_includes_node_data(method, line 109)def test_to_html_includes_node_data(self)test_to_html_includes_community_legend_when_analysis(method, line 116)def test_to_html_includes_community_legend_when_analysis(self)test_to_svg_produces_svg_string(method, line 138)def test_to_svg_produces_svg_string(self)test_to_svg_render_truncation_for_large_graph(method, line 145)def test_to_svg_render_truncation_for_large_graph(self)test_to_svg_includes_readmenator_title(method, line 154)def test_to_svg_includes_readmenator_title(self)test_to_json_handles_resolved_edges(method, line 160)def test_to_json_handles_resolved_edges(self)
- Depends on:
readmenator/_config.py,readmenator/_exporter.py,readmenator/_models.py
tests/test_flowcharts.py
- Doc: Contract tests for architecture tiers, execution flows, and receiver typing.
- Layer: testing
- Language: py
- Symbols:
_project(function, line 94)def _project()TestGraphAlgorithms(class, line 113)class TestGraphAlgorithms(TestCase)TestArchitectureDiagram(class, line 138)class TestArchitectureDiagram(TestCase)TestExecutionFlows(class, line 190)class TestExecutionFlows(TestCase)TestPythonReceiverTypes(class, line 262)class TestPythonReceiverTypes(TestCase)TestFlowLayoutAndViewer(class, line 289)class TestFlowLayoutAndViewer(TestCase)test_flowcharts_tarjan_finds_cycles(method, line 116)def test_flowcharts_tarjan_finds_cycles(self)test_flowcharts_transitive_reduction_drops_implied(method, line 120)def test_flowcharts_transitive_reduction_drops_implied(self)test_flowcharts_eades_lin_smyth_orders_by_weight(method, line 124)def test_flowcharts_eades_lin_smyth_orders_by_weight(self)test_flowcharts_eades_lin_smyth_deterministic(method, line 129)def test_flowcharts_eades_lin_smyth_deterministic(self)test_flowcharts_mermaid_text_escapes(method, line 133)def test_flowcharts_mermaid_text_escapes(self)_fixture(method, line 141)def _fixture(self)test_flowcharts_architecture_tiers_and_upward(method, line 159)def test_flowcharts_architecture_tiers_and_upward(self)test_flowcharts_architecture_skips_tests_and_vendor(method, line 171)def test_flowcharts_architecture_skips_tests_and_vendor(self)test_flowcharts_architecture_section_markdown(method, line 181)def test_flowcharts_architecture_section_markdown(self)setUpClass(method, line 194)def setUpClass(cls)test_flowcharts_typed_receivers_route_calls(method, line 199)def test_flowcharts_typed_receivers_route_calls(self)test_flowcharts_entry_points_scored(method, line 204)def test_flowcharts_entry_points_scored(self)test_flowcharts_walk_order_and_recursion(method, line 210)def test_flowcharts_walk_order_and_recursion(self)test_flowcharts_call_tree_mermaid(method, line 218)def test_flowcharts_call_tree_mermaid(self)test_flowcharts_control_flow_switch_loop_try(method, line 227)def test_flowcharts_control_flow_switch_loop_try(self)test_flowcharts_sequence_crosses_files(method, line 239)def test_flowcharts_sequence_crosses_files(self)test_flowcharts_section_and_kb_integration(method, line 247)def test_flowcharts_section_and_kb_integration(self)setUp(method, line 265)def setUp(self)test_pytypes_receiver_classes(method, line 269)def test_pytypes_receiver_classes(self)test_pytypes_resolve_method_picks_typed_owner(method, line 275)def test_pytypes_resolve_method_picks_typed_owner(self)test_pytypes_accepts_rejects_unproven(method, line 279)def test_pytypes_accepts_rejects_unproven(self)setUpClass(method, line 293)def setUpClass(cls)test_flowlayout_kinds_present(method, line 297)def test_flowlayout_kinds_present(self)test_flowlayout_never_a_strip(method, line 303)def test_flowlayout_never_a_strip(self)test_flowlayout_ladder_is_narrow(method, line 317)def test_flowlayout_ladder_is_narrow(self)test_flowlayout_edges_have_geometry(method, line 328)def test_flowlayout_edges_have_geometry(self)test_flowpage_self_contained_and_escaped(method, line 336)def test_flowpage_self_contained_and_escaped(self)test_flowpage_thumbnail(method, line 345)def test_flowpage_thumbnail(self)test_flowpage_api_site_embeds_flows(method, line 350)def test_flowpage_api_site_embeds_flows(self)
- Depends on:
readmenator/_apidocs.py,readmenator/_apidocs_page.py,readmenator/_config.py,readmenator/_documentation.py,readmenator/_flowcharts.py,readmenator/_flowlayout.py,readmenator/_flowpage.py,readmenator/_models.py,readmenator/_pytypes.py
tests/test_folder_readme.py
- Doc: Contract tests for per-folder README.md files (readmenator/_folder_readme.py).
- Layer: testing
- Language: py
- Symbols:
TestFolderReadmeWriterContract(class, line 20)class TestFolderReadmeWriterContract(TestCase)TestFolderReadmeConsumersContract(class, line 103)class TestFolderReadmeConsumersContract(TestCase)TestFolderReadmeAppWiring(class, line 144)class TestFolderReadmeAppWiring(TestCase)setUp(method, line 23)def setUp(self)tearDown(method, line 36)def tearDown(self)readme(method, line 40)def readme(self, dirname)test_folder_readme_written_only_for_existing_folders(method, line 44)def test_folder_readme_written_only_for_existing_folders(self)test_folder_readme_explains_purpose_and_lists_only_present_entries(method, line 50)def test_folder_readme_explains_purpose_and_lists_only_present_entries(self)test_folder_readme_is_idempotent_and_deterministic(method, line 64)def test_folder_readme_is_idempotent_and_deterministic(self)test_folder_readme_keeps_hand_written_readme(method, line 70)def test_folder_readme_keeps_hand_written_readme(self)test_folder_readme_refuses_symlinks(method, line 77)def test_folder_readme_refuses_symlinks(self)test_folder_readme_disabled_writes_nothing(method, line 90)def test_folder_readme_disabled_writes_nothing(self)test_folder_readme_specs_cover_every_generated_folder(method, line 95)def test_folder_readme_specs_cover_every_generated_folder(self)setUp(method, line 106)def setUp(self)tearDown(method, line 116)def tearDown(self)test_folder_readme_not_published_to_site_or_github_wiki(method, line 120)def test_folder_readme_not_published_to_site_or_github_wiki(self)test_folder_readme_hand_written_still_published(method, line 127)def test_folder_readme_hand_written_still_published(self)test_folder_readme_excluded_from_agent_inventory(method, line 133)def test_folder_readme_excluded_from_agent_inventory(self)test_folder_readme_survives_component_pruning(method, line 137)def test_folder_readme_survives_component_pruning(self)test_folder_readme_written_by_export_apidocs(method, line 147)def test_folder_readme_written_by_export_apidocs(self)
- Depends on:
readmenator/_agent_output.py,readmenator/_app.py,readmenator/_components.py,readmenator/_config.py,readmenator/_diagrams.py,readmenator/_folder_readme.py,readmenator/_gh_wiki.py
tests/test_gh_wiki.py
- Doc: Contract tests for the GitHub wiki publisher (no network: git/gh calls are faked).
- Layer: testing
- Language: py
- Symbols:
_FakeRunner(class, line 14)class _FakeRunner_project(function, line 41)def _project(root, config)TestGitHubWikiPages(class, line 61)class TestGitHubWikiPages(TestCase)TestGitHubWikiPublish(class, line 115)class TestGitHubWikiPublish(TestCase)__init__(method, line 17)def __init__(self, origin, clone_ok, dirty)__call__(method, line 24)def __call__(self, command, cwd)test_gh_wiki_page_names_are_flat_and_prefixed(method, line 64)def test_gh_wiki_page_names_are_flat_and_prefixed(self)test_gh_wiki_render_rewrites_links_and_permalinks(method, line 71)def test_gh_wiki_render_rewrites_links_and_permalinks(self)test_gh_wiki_permalinks_never_escape_project_root(method, line 88)def test_gh_wiki_permalinks_never_escape_project_root(self)test_gh_wiki_dry_run_writes_locally_and_prunes_only_owned_pages(method, line 96)def test_gh_wiki_dry_run_writes_locally_and_prunes_only_owned_pages(self)test_gh_wiki_publish_clones_commits_and_pushes(method, line 118)def test_gh_wiki_publish_clones_commits_and_pushes(self)test_gh_wiki_publish_skips_push_when_unchanged(method, line 130)def test_gh_wiki_publish_skips_push_when_unchanged(self)test_gh_wiki_publish_explains_uninitialized_wiki(method, line 139)def test_gh_wiki_publish_explains_uninitialized_wiki(self)test_gh_wiki_rejects_malformed_configured_remote(method, line 147)def test_gh_wiki_rejects_malformed_configured_remote(self)test_gh_wiki_enabled_by_default(method, line 154)def test_gh_wiki_enabled_by_default(self)test_rebuild_skips_wiki_outside_git_checkout(method, line 157)def test_rebuild_skips_wiki_outside_git_checkout(self)test_rebuild_publishes_wiki_in_git_checkout(method, line 167)def test_rebuild_publishes_wiki_in_git_checkout(self)
- Depends on:
readmenator/_app.py,readmenator/_config.py,readmenator/_gh_wiki.py
tests/test_graphlayout.py
- Doc: Contract tests for ForceAtlas2 and hierarchical edge bundling layouts.
- Layer: testing
- Language: py
- Symbols:
_two_cliques(function, line 22)def _two_cliques()TestForceAtlas2Contract(class, line 31)class TestForceAtlas2Contract(TestCase)TestEdgeBundlingContract(class, line 88)class TestEdgeBundlingContract(TestCase)TestForceAtlas2ThreeDContract(class, line 126)class TestForceAtlas2ThreeDContract(TestCase)TestSphericalBundlingContract(class, line 167)class TestSphericalBundlingContract(TestCase)test_graphlayout_fa2_snapshot_count(method, line 34)def test_graphlayout_fa2_snapshot_count(self)test_graphlayout_fa2_is_deterministic(method, line 41)def test_graphlayout_fa2_is_deterministic(self)test_graphlayout_fa2_separates_communities(method, line 47)def test_graphlayout_fa2_separates_communities(self)test_graphlayout_fa2_python_fallback_runs(method, line 59)def test_graphlayout_fa2_python_fallback_runs(self)test_graphlayout_empty_and_single(method, line 66)def test_graphlayout_empty_and_single(self)test_graphlayout_fit_frames_stays_in_box(method, line 71)def test_graphlayout_fit_frames_stays_in_box(self)test_graphlayout_interpolate_endpoints(method, line 80)def test_graphlayout_interpolate_endpoints(self)setUp(method, line 91)def setUp(self)test_graphlayout_leaves_on_circle(method, line 99)def test_graphlayout_leaves_on_circle(self)test_graphlayout_curves_skip_unknown_and_keep_endpoints(method, line 104)def test_graphlayout_curves_skip_unknown_and_keep_endpoints(self)test_graphlayout_cross_group_curve_bends_inward(method, line 111)def test_graphlayout_cross_group_curve_bends_inward(self)test_graphlayout_groups_cover_full_circle(method, line 119)def test_graphlayout_groups_cover_full_circle(self)test_graphlayout_fa2_3d_returns_triples(method, line 129)def test_graphlayout_fa2_3d_returns_triples(self)test_graphlayout_fa2_3d_is_deterministic(method, line 137)def test_graphlayout_fa2_3d_is_deterministic(self)test_graphlayout_fa2_3d_python_fallback_runs(method, line 143)def test_graphlayout_fa2_3d_python_fallback_runs(self)test_graphlayout_fa2_2d_seed_unchanged_by_dims(method, line 149)def test_graphlayout_fa2_2d_seed_unchanged_by_dims(self)test_graphlayout_single_node_3d_at_origin(method, line 153)def test_graphlayout_single_node_3d_at_origin(self)test_graphlayout_normalize_cloud_bounds_outliers(method, line 158)def test_graphlayout_normalize_cloud_bounds_outliers(self)setUp(method, line 170)def setUp(self)test_graphlayout_fibonacci_sphere_unit_vectors(method, line 180)def test_graphlayout_fibonacci_sphere_unit_vectors(self)test_graphlayout_sphere_leaves_on_surface(method, line 188)def test_graphlayout_sphere_leaves_on_surface(self)test_graphlayout_sphere_caps_have_exact_sizes(method, line 195)def test_graphlayout_sphere_caps_have_exact_sizes(self)test_graphlayout_sphere_caps_are_compact(method, line 199)def test_graphlayout_sphere_caps_are_compact(self)test_graphlayout_sphere_hub_is_closest_to_cap_center(method, line 209)def test_graphlayout_sphere_hub_is_closest_to_cap_center(self)test_graphlayout_sphere_curves_skip_unknown_and_self(method, line 215)def test_graphlayout_sphere_curves_skip_unknown_and_self(self)test_graphlayout_sphere_cross_curve_dives_inside(method, line 223)def test_graphlayout_sphere_cross_curve_dives_inside(self)test_graphlayout_sphere_is_deterministic_and_empty_safe(method, line 228)def test_graphlayout_sphere_is_deterministic_and_empty_safe(self)mean(function, line 52)def mean(pairs)
- Depends on:
readmenator/_graphlayout.py
tests/test_graphrag.py
- Doc: Contract tests for the zero-token GraphRAG index and retrieval.
- Layer: testing
- Language: py
- Symbols:
_fixture(function, line 32)def _fixture()TestGraphRagIndexContract(class, line 79)class TestGraphRagIndexContract(TestCase)TestGraphRagSearchContract(class, line 159)class TestGraphRagSearchContract(TestCase)TestGraphRagStoreContract(class, line 213)class TestGraphRagStoreContract(TestCase)TestGraphRagPrimitives(class, line 241)class TestGraphRagPrimitives(TestCase)setUp(method, line 82)def setUp(self)test_graphrag_entities_cover_files_symbols_externals(method, line 89)def test_graphrag_entities_cover_files_symbols_externals(self)test_graphrag_relationships_are_typed(method, line 97)def test_graphrag_relationships_are_typed(self)test_graphrag_report_hierarchy_has_root(method, line 104)def test_graphrag_report_hierarchy_has_root(self)test_graphrag_reports_are_extractive_and_rated(method, line 112)def test_graphrag_reports_are_extractive_and_rated(self)test_graphrag_text_units_use_source_spans(method, line 121)def test_graphrag_text_units_use_source_spans(self)test_graphrag_text_units_respect_max_lines(method, line 128)def test_graphrag_text_units_respect_max_lines(self)test_graphrag_privacy_mode_strips_sources_and_docs(method, line 133)def test_graphrag_privacy_mode_strips_sources_and_docs(self)test_graphrag_disabled_returns_empty_index(method, line 142)def test_graphrag_disabled_returns_empty_index(self)test_graphrag_build_is_deterministic(method, line 148)def test_graphrag_build_is_deterministic(self)test_graphrag_roundtrip_dict(method, line 153)def test_graphrag_roundtrip_dict(self)setUp(method, line 162)def setUp(self)test_graphrag_local_search_ranks_matching_symbol(method, line 169)def test_graphrag_local_search_ranks_matching_symbol(self)test_graphrag_local_search_expands_through_graph(method, line 177)def test_graphrag_local_search_expands_through_graph(self)test_graphrag_global_search_uses_reports(method, line 183)def test_graphrag_global_search_uses_reports(self)test_graphrag_auto_routes_broad_questions_global(method, line 190)def test_graphrag_auto_routes_broad_questions_global(self)test_graphrag_no_match_falls_back_global(method, line 195)def test_graphrag_no_match_falls_back_global(self)test_graphrag_budget_never_emits_empty_sections(method, line 199)def test_graphrag_budget_never_emits_empty_sections(self)test_graphrag_budget_bounds_markdown(method, line 207)def test_graphrag_budget_bounds_markdown(self)test_graphrag_store_writes_and_loads(method, line 216)def test_graphrag_store_writes_and_loads(self)test_graphrag_store_rejects_wrong_schema(method, line 231)def test_graphrag_store_rejects_wrong_schema(self)test_graphrag_tokenize_splits_camel_and_keeps_whole(method, line 244)def test_graphrag_tokenize_splits_camel_and_keeps_whole(self)test_graphrag_bm25_prefers_rare_terms(method, line 250)def test_graphrag_bm25_prefers_rare_terms(self)
- Depends on:
readmenator/_config.py,readmenator/_graphrag.py,readmenator/_models.py
tests/test_hotspots.py
- Doc: TestHotspotAnalyzerContract: Contract: HotspotAnalyzer detects hotspots, cycles, and change impact.
- Layer: testing
- Language: py
- Symbols:
TestHotspotAnalyzerContract(class, line 10)class TestHotspotAnalyzerContract(TestCase)setUp(method, line 13)def setUp(self)_make_node(method, line 17)def _make_node(self, nid, label, sym_count)test_empty_graph_returns_empty_hotspots(method, line 29)def test_empty_graph_returns_empty_hotspots(self)test_hotspots_rank_by_combined_score(method, line 33)def test_hotspots_rank_by_combined_score(self)test_hotspot_includes_scores(method, line 43)def test_hotspot_includes_scores(self)test_no_cycles_in_acyclic_graph(method, line 53)def test_no_cycles_in_acyclic_graph(self)test_detects_simple_cycle(method, line 66)def test_detects_simple_cycle(self)test_change_impact_ranks_by_total_impact(method, line 79)def test_change_impact_ranks_by_total_impact(self)test_change_impact_no_edges(method, line 94)def test_change_impact_no_edges(self)test_hotspot_weights_from_config(method, line 100)def test_hotspot_weights_from_config(self)
- Depends on:
readmenator/_config.py,readmenator/_hotspots.py,readmenator/_models.py
tests/test_htmlpack.py
- Doc: Contract tests for embedded page payload compression (readmenator/_htmlpack.py).
- Layer: testing
- Language: py
- Symbols:
_inline_scripts(function, line 47)def _inline_scripts(document)_build_site(function, line 52)def _build_site(root, config)TestPayloadScriptContract(class, line 68)class TestPayloadScriptContract(TestCase)TestCompressedPagesContract(class, line 140)class TestCompressedPagesContract(TestCase)setUp(method, line 71)def setUp(self)test_htmlpack_small_payload_stays_plain_and_escaped(method, line 77)def test_htmlpack_small_payload_stays_plain_and_escaped(self)test_htmlpack_large_payload_is_gzip_base64_and_round_trips(method, line 83)def test_htmlpack_large_payload_is_gzip_base64_and_round_trips(self)test_htmlpack_compression_is_deterministic(method, line 90)def test_htmlpack_compression_is_deterministic(self)test_htmlpack_threshold_and_disable_flag(method, line 95)def test_htmlpack_threshold_and_disable_flag(self)test_htmlpack_plain_format_matches_legacy_serialization(method, line 101)def test_htmlpack_plain_format_matches_legacy_serialization(self)test_htmlpack_missing_or_empty_element_reads_none(method, line 107)def test_htmlpack_missing_or_empty_element_reads_none(self)test_htmlpack_browser_loader_decodes_both_encodings(method, line 112)def test_htmlpack_browser_loader_decodes_both_encodings(self)setUpClass(method, line 144)def setUpClass(cls)tearDownClass(method, line 152)def tearDownClass(cls)test_htmlpack_pages_compress_every_payload_when_forced(method, line 156)def test_htmlpack_pages_compress_every_payload_when_forced(self)test_htmlpack_pages_decode_identical_payloads(method, line 162)def test_htmlpack_pages_decode_identical_payloads(self)test_htmlpack_pages_boot_through_the_shared_loader(method, line 169)def test_htmlpack_pages_boot_through_the_shared_loader(self)test_htmlpack_pages_inline_scripts_are_valid_javascript(method, line 177)def test_htmlpack_pages_inline_scripts_are_valid_javascript(self)
- Depends on:
readmenator/_app.py,readmenator/_config.py,readmenator/_htmlpack.py
tests/test_integration.py
- Layer: testing
- Language: py
- Symbols:
TestEndToEndContract(class, line 9)class TestEndToEndContract(TestCase)setUp(method, line 10)def setUp(self)tearDown(method, line 15)def tearDown(self)_write(method, line 19)def _write(self, path, content)test_full_pipeline_generates_knowledge_base(method, line 24)def test_full_pipeline_generates_knowledge_base(self)test_knowledge_base_contains_mermaid(method, line 40)def test_knowledge_base_contains_mermaid(self)test_query_subcommand_works(method, line 48)def test_query_subcommand_works(self)test_explain_subcommand_works(method, line 53)def test_explain_subcommand_works(self)test_path_subcommand_works(method, line 59)def test_path_subcommand_works(self)test_summary_works(method, line 65)def test_summary_works(self)test_rebuild(method, line 71)def test_rebuild(self)test_knowledge_base_contains_cpg(method, line 81)def test_knowledge_base_contains_cpg(self)test_knowledge_base_contains_statistics_dashboard(method, line 89)def test_knowledge_base_contains_statistics_dashboard(self)test_audit_deep_returns_analysis(method, line 98)def test_audit_deep_returns_analysis(self)test_privacy_mode_works(method, line 105)def test_privacy_mode_works(self)test_export_sarif_produces_file(method, line 114)def test_export_sarif_produces_file(self)
- Depends on:
readmenator/_app.py,readmenator/_config.py
tests/test_interactive_graph.py
- Doc: Contract tests for the interactive explorer modules.
- Layer: testing
- Language: py
- Symbols:
_node(function, line 40)def _node(nid, symbols)TestForceGraphContract(class, line 52)class TestForceGraphContract(TestCase)TestScanTextContract(class, line 133)class TestScanTextContract(TestCase)self_nodes(function, line 153)def self_nodes()TestYaraLiteContract(class, line 158)class TestYaraLiteContract(TestCase)TestProvenanceContract(class, line 211)class TestProvenanceContract(TestCase)TestExclusionsContract(class, line 234)class TestExclusionsContract(TestCase)TestAnalyticsContract(class, line 254)class TestAnalyticsContract(TestCase)TestExplorerContract(class, line 275)class TestExplorerContract(TestCase)TestEmbedContract(class, line 290)class TestEmbedContract(TestCase)TestRebuildContract(class, line 317)class TestRebuildContract(TestCase)TestGalleryCardContract(class, line 369)class TestGalleryCardContract(TestCase)TestForceGraphInspectorPayload(class, line 426)class TestForceGraphInspectorPayload(TestCase)_inline_script(function, line 477)def _inline_script(html)_const_json(function, line 486)def _const_json(html, name)TestForceGraphExplorerInteraction(class, line 497)class TestForceGraphExplorerInteraction(TestCase)setUp(method, line 55)def setUp(self)test_family_color_is_deterministic(method, line 61)def test_family_color_is_deterministic(self)test_node_value_dampens_large_files(method, line 66)def test_node_value_dampens_large_files(self)test_build_payload_has_heterogeneous_nodes(method, line 74)def test_build_payload_has_heterogeneous_nodes(self)test_build_payload_maps_communities(method, line 82)def test_build_payload_maps_communities(self)test_render_produces_standalone_html(method, line 94)def test_render_produces_standalone_html(self)test_render_uses_supported_cdn_fallback(method, line 106)def test_render_uses_supported_cdn_fallback(self)test_write_copies_vendor_engine(method, line 112)def test_write_copies_vendor_engine(self)test_exporter_delegates_to_forcegraph(method, line 127)def test_exporter_delegates_to_forcegraph(self)test_build_for_node_includes_sections(method, line 136)def test_build_for_node_includes_sections(self)test_build_corpus_maps_every_node(method, line 146)def test_build_corpus_maps_every_node(self)test_parse_reports_tiers(method, line 184)def test_parse_reports_tiers(self)test_run_matches_any_of_them(method, line 190)def test_run_matches_any_of_them(self)test_run_requires_cooccurrence(method, line 196)def test_run_requires_cooccurrence(self)test_validate_counts_rules(method, line 203)def test_validate_counts_rules(self)test_audit_flags_snippetless_findings(method, line 214)def test_audit_flags_snippetless_findings(self)test_summary_counts_classes(method, line 226)def test_summary_counts_classes(self)test_parse_and_match_glob(method, line 237)def test_parse_and_match_glob(self)test_filter_findings_removes_excluded(method, line 243)def test_filter_findings_removes_excluded(self)test_build_has_all_sections(method, line 257)def test_build_has_all_sections(self)test_build_state_serves_apis(method, line 278)def test_build_state_serves_apis(self)test_near_jaccard_prefers_shared_terms(method, line 293)def test_near_jaccard_prefers_shared_terms(self)test_cluster_groups_similar_files(method, line 304)def test_cluster_groups_similar_files(self)_run_app(method, line 320)def _run_app(self, tmp)test_run_writes_forcegraph_html(method, line 335)def test_run_writes_forcegraph_html(self)test_run_skips_forcegraph_when_disabled(method, line 347)def test_run_skips_forcegraph_when_disabled(self)test_publish_appends_extra_card(method, line 372)def test_publish_appends_extra_card(self)test_export_diagrams_writes_forcegraph_and_card(method, line 399)def test_export_diagrams_writes_forcegraph_and_card(self)setUp(method, line 429)def setUp(self)test_forcegraph_file_nodes_carry_inspector_fields(method, line 441)def test_forcegraph_file_nodes_carry_inspector_fields(self)test_forcegraph_externals_exclude_calls_and_internal_imports(method, line 449)def test_forcegraph_externals_exclude_calls_and_internal_imports(self)test_forcegraph_privacy_mode_strips_docs(method, line 454)def test_forcegraph_privacy_mode_strips_docs(self)test_forcegraph_thumbnail_escapes_colors(method, line 462)def test_forcegraph_thumbnail_escapes_colors(self)test_forcegraph_render_has_inspector_and_layouts(method, line 470)def test_forcegraph_render_has_inspector_and_layouts(self)setUp(method, line 500)def setUp(self)test_explorer_hit_tests_against_live_positions(method, line 514)def test_explorer_hit_tests_against_live_positions(self)test_explorer_3d_draws_flat_glyphs_on_overlay(method, line 519)def test_explorer_3d_draws_flat_glyphs_on_overlay(self)test_explorer_3d_engine_is_pinned(method, line 524)def test_explorer_3d_engine_is_pinned(self)test_explorer_ships_edge_path_and_lens_actions(method, line 530)def test_explorer_ships_edge_path_and_lens_actions(self)test_explorer_settings_come_from_config(method, line 535)def test_explorer_settings_come_from_config(self)test_explorer_structural_edges_use_their_own_colors(method, line 546)def test_explorer_structural_edges_use_their_own_colors(self)test_explorer_placeholders_inside_data_are_left_alone(method, line 553)def test_explorer_placeholders_inside_data_are_left_alone(self)test_explorer_data_cannot_close_the_script(method, line 563)def test_explorer_data_cannot_close_the_script(self)test_explorer_script_is_valid_javascript(method, line 571)def test_explorer_script_is_valid_javascript(self)
- Depends on:
readmenator/_analytics.py,readmenator/_app.py,readmenator/_config.py,readmenator/_diagrams.py,readmenator/_embed.py,readmenator/_exclusions.py,readmenator/_explorer.py,readmenator/_exporter.py,readmenator/_forcegraph.py,readmenator/_htmlpack.py,readmenator/_models.py,readmenator/_provenance.py,readmenator/_scantext.py,readmenator/_yaralite.py
tests/test_layer_rules.py
- Doc: TestLayerRuleEngineContract: Contract: LayerRuleEngine detects architectural layer violations.
- Layer: testing
- Language: py
- Symbols:
TestLayerRuleEngineContract(class, line 10)class TestLayerRuleEngineContract(TestCase)setUp(method, line 13)def setUp(self)_make_node(method, line 17)def _make_node(self, nid, label)test_empty_graph_returns_empty_violations(method, line 20)def test_empty_graph_returns_empty_violations(self)test_no_layers_returns_empty_violations(method, line 24)def test_no_layers_returns_empty_violations(self)test_same_layer_no_violation(method, line 29)def test_same_layer_no_violation(self)test_forbidden_edge_detected(method, line 36)def test_forbidden_edge_detected(self)test_allowed_testing_edges_no_violation(method, line 46)def test_allowed_testing_edges_no_violation(self)test_multiple_violations(method, line 57)def test_multiple_violations(self)test_utility_layer_ignored(method, line 75)def test_utility_layer_ignored(self)test_violation_summary(method, line 82)def test_violation_summary(self)test_resolved_edges_also_checked(method, line 104)def test_resolved_edges_also_checked(self)test_presentation_to_data_access_forbidden(method, line 115)def test_presentation_to_data_access_forbidden(self)
- Depends on:
readmenator/_config.py,readmenator/_layer_rules.py,readmenator/_models.py
tests/test_layout_quality.py
- Doc: Contract tests for bundle crossing reduction and seeded explorer layouts.
- Layer: testing
- Language: py
- Symbols:
_clustered(function, line 23)def _clustered()_chords(function, line 37)def _chords(layout, edges)TestBundleOrdering(class, line 42)class TestBundleOrdering(TestCase)_force_payload_inputs(function, line 100)def _force_payload_inputs()TestSeededExplorer(class, line 116)class TestSeededExplorer(TestCase)test_layout_order_reduces_angular_cost(method, line 45)def test_layout_order_reduces_angular_cost(self)test_layout_order_keeps_members_and_first_group(method, line 50)def test_layout_order_keeps_members_and_first_group(self)test_layout_order_deterministic_and_never_worse(method, line 56)def test_layout_order_deterministic_and_never_worse(self)test_layout_more_sweeps_never_increase_cost(method, line 63)def test_layout_more_sweeps_never_increase_cost(self)test_layout_center_out_puts_hub_mid_arc(method, line 77)def test_layout_center_out_puts_hub_mid_arc(self)test_layout_sphere_refinement_shortens_chords(method, line 82)def test_layout_sphere_refinement_shortens_chords(self)test_layout_sphere_refine_in_bundling_call(method, line 92)def test_layout_sphere_refine_in_bundling_call(self)test_layout_seed_positions_present_and_scaled(method, line 119)def test_layout_seed_positions_present_and_scaled(self)test_layout_seed_deterministic_and_disableable(method, line 132)def test_layout_seed_deterministic_and_disableable(self)test_layout_seed_page_wiring(method, line 142)def test_layout_seed_page_wiring(self)test_layout_bundle_payload_uses_optimized_order(method, line 150)def test_layout_bundle_payload_uses_optimized_order(self)
- Depends on:
readmenator/_bundlegraph.py,readmenator/_config.py,readmenator/_forcegraph.py,readmenator/_forcegraph_page.py,readmenator/_graphlayout.py,readmenator/_models.py
Next: KB_tests_p3.md