Agent KB_tests - grisuno/ReadMenator GitHub Wiki

Subsystem: tests (page 1 of 4)

Pages: KB_tests.md, KB_tests_p2.md, KB_tests_p3.md, KB_tests_p4.md

tests/init.py

  • Layer: testing
  • Language: py

tests/test_agent_friendliness.py

  • Doc: Contract tests for agent-facing output quality: budgets, purposes, freshness, noise.
  • Layer: testing
  • Language: py
  • Symbols:
    • _node (function, line 21) def _node(node_id, doc, symbols)
    • _edge (function, line 29) def _edge(source, target, relation)
    • _big_project (function, line 34) def _big_project(files, symbols_per_file)
    • TestAgentOutputBudget (class, line 55) class TestAgentOutputBudget(TestCase)
    • TestAgentOutputSignal (class, line 110) class TestAgentOutputSignal(TestCase)
    • TestPurposeExtraction (class, line 176) class TestPurposeExtraction(TestCase)
    • TestManifestFreshness (class, line 199) class TestManifestFreshness(TestCase)
    • TestNoiseReduction (class, line 244) class TestNoiseReduction(TestCase)
    • TestLlmsTxt (class, line 281) class TestLlmsTxt(TestCase)
    • TestCommunityHubDamping (class, line 308) class TestCommunityHubDamping(TestCase)
    • TestSourceFreshness (class, line 329) class TestSourceFreshness(TestCase)
    • TestCommunityShaping (class, line 363) class TestCommunityShaping(TestCase)
    • TestSiteDocsPruning (class, line 394) class TestSiteDocsPruning(TestCase)
    • TestLouvainCommunities (class, line 411) class TestLouvainCommunities(TestCase)
    • TestGalleryIndex (class, line 456) class TestGalleryIndex(TestCase)
    • TestLiveMapCommunities (class, line 514) class TestLiveMapCommunities(TestCase)
    • test_agent_output_pages_respect_line_cap_on_large_projects (method, line 58) def test_agent_output_pages_respect_line_cap_on_large_projects(self)
    • test_agent_output_pagination_keeps_every_symbol_greppable (method, line 71) def test_agent_output_pagination_keeps_every_symbol_greppable(self)
    • test_agent_output_pages_repeat_table_header_and_link_next (method, line 84) def test_agent_output_pages_repeat_table_header_and_link_next(self)
    • test_agent_output_prunes_stale_pages (method, line 96) def test_agent_output_prunes_stale_pages(self)
    • test_api_states_dependencies_once_per_file (method, line 113) def test_api_states_dependencies_once_per_file(self)
    • test_api_skips_private_helpers_and_test_layer (method, line 122) def test_api_skips_private_helpers_and_test_layer(self)
    • test_api_qualifies_methods_with_owner_class (method, line 136) def test_api_qualifies_methods_with_owner_class(self)
    • test_architecture_external_excludes_internally_resolved_imports (method, line 144) def test_architecture_external_excludes_internally_resolved_imports(self)
    • test_index_reports_used_by_count_and_escapes_pipes (method, line 153) def test_index_reports_used_by_count_and_escapes_pipes(self)
    • test_gotchas_exclude_test_layer_and_report_blast_radius (method, line 161) def test_gotchas_exclude_test_layer_and_report_blast_radius(self)
    • test_purpose_takes_first_sentence (method, line 179) def test_purpose_takes_first_sentence(self)
    • test_purpose_skips_banners_and_spdx (method, line 182) def test_purpose_skips_banners_and_spdx(self)
    • test_purpose_falls_back_to_primary_public_symbol (method, line 185) def test_purpose_falls_back_to_primary_public_symbol(self)
    • test_purpose_truncates_on_word_boundary (method, line 192) def test_purpose_truncates_on_word_boundary(self)
    • _git_repo (method, line 202) def _git_repo(self, root, packed)
    • test_gitmeta_reads_loose_and_packed_refs (method, line 214) def test_gitmeta_reads_loose_and_packed_refs(self)
    • test_gitmeta_outside_repository_is_empty (method, line 220) def test_gitmeta_outside_repository_is_empty(self)
    • test_manifest_has_commit_relative_root_and_inventory (method, line 224) def test_manifest_has_commit_relative_root_and_inventory(self)
    • test_scanner_skips_own_generated_outputs (method, line 247) def test_scanner_skips_own_generated_outputs(self)
    • test_resolver_prefers_root_package_over_launcher_shim (method, line 260) def test_resolver_prefers_root_package_over_launcher_shim(self)
    • test_layers_match_whole_words_not_substrings (method, line 264) def test_layers_match_whole_words_not_substrings(self)
    • test_layers_test_framework_import_needs_test_path (method, line 272) def test_layers_test_framework_import_needs_test_path(self)
    • test_llms_txt_lists_wiki_before_agent_docs (method, line 284) def test_llms_txt_lists_wiki_before_agent_docs(self)
    • test_publish_writes_llms_txt (method, line 296) def test_publish_writes_llms_txt(self)
    • test_communities_survive_a_shared_hub (method, line 311) def test_communities_survive_a_shared_hub(self)
    • test_fingerprint_changes_with_content_not_with_order (method, line 332) def test_fingerprint_changes_with_content_not_with_order(self)
    • test_check_freshness_detects_source_edits (method, line 343) def test_check_freshness_detects_source_edits(self)
    • test_small_community_merges_into_best_connected_neighbor (method, line 366) def test_small_community_merges_into_best_connected_neighbor(self)
    • test_shared_directory_labels_use_core_file (method, line 380) def test_shared_directory_labels_use_core_file(self)
    • test_publish_assets_prunes_stale_markdown (method, line 397) def test_publish_assets_prunes_stale_markdown(self)
    • _two_cliques (method, line 414) def _two_cliques(self)
    • test_louvain_splits_bridged_cliques (method, line 426) def test_louvain_splits_bridged_cliques(self)
    • test_louvain_is_deterministic_and_numbered_by_size (method, line 435) def test_louvain_is_deterministic_and_numbered_by_size(self)
    • test_community_label_ignores_test_directory (method, line 446) def test_community_label_ignores_test_directory(self)
    • _entries (method, line 459) def _entries(self)
    • test_gallery_groups_docs_and_collapses_pages (method, line 470) def test_gallery_groups_docs_and_collapses_pages(self)
    • test_gallery_video_has_poster_and_start_here (method, line 480) def test_gallery_video_has_poster_and_start_here(self)
    • test_gallery_has_no_external_resources_and_escapes_titles (method, line 486) def test_gallery_has_no_external_resources_and_escapes_titles(self)
    • test_gallery_footer_links_github_and_pypi (method, line 497) def test_gallery_footer_links_github_and_pypi(self)
    • test_doc_preview_skips_markdown_syntax (method, line 507) def test_doc_preview_skips_markdown_syntax(self)
    • _inputs (method, line 517) def _inputs(self)
    • test_built_maps_carry_community_and_core_role (method, line 533) def test_built_maps_carry_community_and_core_role(self)
    • test_vis_render_includes_legend_and_dot_scaling (method, line 542) def test_vis_render_includes_legend_and_dot_scaling(self)
  • Depends on: readmenator/_agent_output.py, readmenator/_analyzer.py, readmenator/_app.py, readmenator/_cache.py, readmenator/_config.py, readmenator/_diagrams.py, readmenator/_gitmeta.py, readmenator/_layers.py, readmenator/_models.py, readmenator/_purpose.py, readmenator/_resolver.py, readmenator/_scanner.py

tests/test_agent_injector.py

  • Doc: Contract tests for AI agent file injection.
  • Layer: testing
  • Language: py
  • Symbols:
    • TestAgentInjectorInjectBehavior (class, line 19) class TestAgentInjectorInjectBehavior(TestCase)
    • TestAgentInjectorRemoveBehavior (class, line 161) class TestAgentInjectorRemoveBehavior(TestCase)
    • TestAgentInjectorFindFiles (class, line 204) class TestAgentInjectorFindFiles(TestCase)
    • TestAgentInjectorEdgeCases (class, line 241) class TestAgentInjectorEdgeCases(TestCase)
    • setUp (method, line 22) def setUp(self)
    • tearDown (method, line 27) def tearDown(self)
    • test_inject_into_agents_md_adds_kb_link (method, line 30) def test_inject_into_agents_md_adds_kb_link(self)
    • test_inject_into_claude_md_adds_kb_link (method, line 39) def test_inject_into_claude_md_adds_kb_link(self)
    • test_inject_into_cursorrules_adds_kb_link (method, line 49) def test_inject_into_cursorrules_adds_kb_link(self)
    • test_inject_into_github_copilot_instructions (method, line 57) def test_inject_into_github_copilot_instructions(self)
    • test_inject_replaces_old_injection_without_regen_command (method, line 67) def test_inject_replaces_old_injection_without_regen_command(self)
    • test_inject_skips_when_already_up_to_date (method, line 82) def test_inject_skips_when_already_up_to_date(self)
    • test_inject_into_cursor_rules_mdc_glob (method, line 89) def test_inject_into_cursor_rules_mdc_glob(self)
    • test_inject_is_idempotent_does_not_duplicate (method, line 99) def test_inject_is_idempotent_does_not_duplicate(self)
    • test_inject_no_agent_files_returns_zero (method, line 110) def test_inject_no_agent_files_returns_zero(self)
    • test_inject_preserves_existing_content (method, line 114) def test_inject_preserves_existing_content(self)
    • test_inject_multiple_agent_files (method, line 122) def test_inject_multiple_agent_files(self)
    • test_inject_plain_text_format_for_yaml (method, line 129) def test_inject_plain_text_format_for_yaml(self)
    • test_custom_kb_filename_works (method, line 138) def test_custom_kb_filename_works(self)
    • test_injection_includes_regeneration_command (method, line 146) def test_injection_includes_regeneration_command(self)
    • test_inject_does_not_execute_commands (method, line 153) def test_inject_does_not_execute_commands(self)
    • setUp (method, line 164) def setUp(self)
    • tearDown (method, line 169) def tearDown(self)
    • test_remove_strips_injected_section (method, line 172) def test_remove_strips_injected_section(self)
    • test_remove_without_injection_returns_zero (method, line 183) def test_remove_without_injection_returns_zero(self)
    • test_remove_no_files_returns_zero (method, line 189) def test_remove_no_files_returns_zero(self)
    • test_remove_preserves_original_content (method, line 193) def test_remove_preserves_original_content(self)
    • setUp (method, line 207) def setUp(self)
    • tearDown (method, line 211) def tearDown(self)
    • test_finds_agents_md (method, line 214) def test_finds_agents_md(self)
    • test_finds_all_listed_files (method, line 220) def test_finds_all_listed_files(self)
    • test_finds_cursor_rules_glob (method, line 227) def test_finds_cursor_rules_glob(self)
    • test_returns_empty_when_no_files (method, line 236) def test_returns_empty_when_no_files(self)
    • setUp (method, line 244) def setUp(self)
    • tearDown (method, line 249) def tearDown(self)
    • test_inject_into_empty_file (method, line 252) def test_inject_into_empty_file(self)
    • test_inject_respects_custom_agent_files_list (method, line 260) def test_inject_respects_custom_agent_files_list(self)
    • test_inject_does_not_touch_unlisted_files (method, line 268) def test_inject_does_not_touch_unlisted_files(self)
  • Depends on: readmenator/_agent_injector.py

tests/test_agent_output.py

  • Layer: testing
  • Language: py
  • Symbols:
    • _make_node (function, line 19) def _make_node(node_id, symbols, doc, language)
    • _make_edge (function, line 30) def _make_edge(source, target, relation)
    • _make_finding (function, line 34) def _make_finding(file_path, line, severity, rule_id, description, snippet, cwe)
    • TestAgentOutputContract (class, line 49) class TestAgentOutputContract(TestCase)
    • TestSubsystemInference (class, line 63) class TestSubsystemInference(TestCase)
    • TestIndexGeneration (class, line 117) class TestIndexGeneration(TestCase)
    • TestSecurityGeneration (class, line 143) class TestSecurityGeneration(TestCase)
    • TestGotchasGeneration (class, line 190) class TestGotchasGeneration(TestCase)
    • TestArchitectureGeneration (class, line 246) class TestArchitectureGeneration(TestCase)
    • TestApiGeneration (class, line 268) class TestApiGeneration(TestCase)
    • TestSubsystemFileGeneration (class, line 294) class TestSubsystemFileGeneration(TestCase)
    • TestRecipesGeneration (class, line 316) class TestRecipesGeneration(TestCase)
    • TestFullGenerate (class, line 362) class TestFullGenerate(TestCase)
    • TestInjectionOutdatedDetection (class, line 434) class TestInjectionOutdatedDetection(TestCase)
    • test_config_defaults (method, line 50) def test_config_defaults(self)
    • test_config_immutable (method, line 56) def test_config_immutable(self)
    • test_inferred_from_directories (method, line 64) def test_inferred_from_directories(self)
    • test_flat_project_single_file (method, line 80) def test_flat_project_single_file(self)
    • test_min_threshold_respected (method, line 91) def test_min_threshold_respected(self)
    • test_misc_catches_unassigned (method, line 103) def test_misc_catches_unassigned(self)
    • test_index_lists_all_files (method, line 118) def test_index_lists_all_files(self)
    • test_index_table_format (method, line 133) def test_index_table_format(self)
    • test_empty_findings (method, line 144) def test_empty_findings(self)
    • test_findings_grouped_by_severity (method, line 150) def test_findings_grouped_by_severity(self)
    • test_findings_include_fix_hint_and_scope (method, line 166) def test_findings_include_fix_hint_and_scope(self)
    • test_no_json_wrapping (method, line 181) def test_no_json_wrapping(self)
    • test_god_nodes_section (method, line 191) def test_god_nodes_section(self)
    • test_cycles_section (method, line 207) def test_cycles_section(self)
    • test_empty_gotchas (method, line 224) def test_empty_gotchas(self)
    • test_cycle_loop_closed (method, line 230) def test_cycle_loop_closed(self)
    • test_internal_dependencies (method, line 247) def test_internal_dependencies(self)
    • test_external_imports (method, line 258) def test_external_imports(self)
    • test_functions_listed (method, line 269) def test_functions_listed(self)
    • test_no_json_in_api (method, line 283) def test_no_json_in_api(self)
    • test_subsystem_files_written (method, line 295) def test_subsystem_files_written(self)
    • test_recipes_directory (method, line 317) def test_recipes_directory(self)
    • test_recipes_grounded_in_actual_findings (method, line 330) def test_recipes_grounded_in_actual_findings(self)
    • test_generate_creates_all_files (method, line 363) def test_generate_creates_all_files(self)
    • test_all_files_under_500_lines (method, line 394) def test_all_files_under_500_lines(self)
    • test_no_json_in_any_output (method, line 409) def test_no_json_in_any_output(self)
    • test_manifest_workflow_orients_with_ls (method, line 421) def test_manifest_workflow_orients_with_ls(self)
    • test_agent_injector_detects_outdated (method, line 435) def test_agent_injector_detects_outdated(self)
    • test_agent_injector_skips_identical (method, line 457) def test_agent_injector_skips_identical(self)
    • test_readme_injector_detects_outdated (method, line 473) def test_readme_injector_detects_outdated(self)
    • test_readme_injector_skips_identical (method, line 495) def test_readme_injector_skips_identical(self)
  • Depends on: readmenator/_agent_injector.py, readmenator/_agent_output.py, readmenator/_config.py, readmenator/_models.py, readmenator/_readme_injector.py

tests/test_analyzer.py

  • Doc: Contract tests for the GraphAnalyzer.
  • Layer: testing
  • Language: py
  • Symbols:
    • TestGraphAnalyzerContract (class, line 16) class TestGraphAnalyzerContract(TestCase)
    • setUp (method, line 19) def setUp(self)
    • _make_node (method, line 23) def _make_node(self, nid, label, lang)
    • _make_edge (method, line 26) def _make_edge(self, src, tgt, rel)
    • test_analyze_empty_graph_returns_empty_result (method, line 29) def test_analyze_empty_graph_returns_empty_result(self)
    • test_analyze_detects_communities_for_connected_graph (method, line 34) def test_analyze_detects_communities_for_connected_graph(self)
    • test_analyze_computes_god_nodes (method, line 48) def test_analyze_computes_god_nodes(self)
    • test_analyze_finds_surprising_connections (method, line 64) def test_analyze_finds_surprising_connections(self)
    • test_analyze_generates_questions (method, line 81) def test_analyze_generates_questions(self)
    • test_community_cohesion_is_between_zero_and_one (method, line 92) def test_community_cohesion_is_between_zero_and_one(self)
    • test_isolated_nodes_do_not_form_communities (method, line 107) def test_isolated_nodes_do_not_form_communities(self)
    • test_analyze_with_resolved_edges_counts_them (method, line 116) def test_analyze_with_resolved_edges_counts_them(self)
    • test_analyze_is_repeatable (method, line 130) def test_analyze_is_repeatable(self)
    • test_dominant_directory_prefers_specific_on_tie (method, line 141) def test_dominant_directory_prefers_specific_on_tie(self)
  • Depends on: readmenator/_analyzer.py, readmenator/_config.py, readmenator/_models.py

tests/test_apidocs.py

  • Doc: Contract tests for the docstring parser and the deterministic API reference.
  • Layer: testing
  • Language: py
  • Symbols:
    • _project (function, line 144) def _project()
    • TestDocstringParser (class, line 163) class TestDocstringParser(TestCase)
    • TestApiReferenceBuilder (class, line 257) class TestApiReferenceBuilder(TestCase)
    • TestSignatureParsing (class, line 380) class TestSignatureParsing(TestCase)
    • TestApiRendering (class, line 403) class TestApiRendering(TestCase)
    • TestApiDocsIntegration (class, line 541) class TestApiDocsIntegration(TestCase)
    • test_docstrings_google_sections (method, line 166) def test_docstrings_google_sections(self)
    • test_docstrings_numpy_sections (method, line 181) def test_docstrings_numpy_sections(self)
    • test_docstrings_rest_fields_and_directives (method, line 191) def test_docstrings_rest_fields_and_directives(self)
    • test_docstrings_jsdoc_and_doxygen_tags (method, line 203) def test_docstrings_jsdoc_and_doxygen_tags(self)
    • test_docstrings_phpdoc_type_before_variable (method, line 218) def test_docstrings_phpdoc_type_before_variable(self)
    • test_docstrings_csharp_xml (method, line 222) def test_docstrings_csharp_xml(self)
    • test_docstrings_rustdoc_sections (method, line 231) def test_docstrings_rustdoc_sections(self)
    • test_docstrings_plain_and_empty (method, line 237) def test_docstrings_plain_and_empty(self)
    • test_docstrings_recover_block_and_line_comments (method, line 244) def test_docstrings_recover_block_and_line_comments(self)
    • test_docstrings_recover_elixir_doc_heredoc (method, line 252) def test_docstrings_recover_elixir_doc_heredoc(self)
    • setUpClass (method, line 261) def setUpClass(cls)
    • test_apidocs_python_signatures_exact (method, line 265) def test_apidocs_python_signatures_exact(self)
    • test_apidocs_python_nesting_and_kinds (method, line 277) def test_apidocs_python_nesting_and_kinds(self)
    • test_apidocs_python_all_and_private_filter (method, line 285) def test_apidocs_python_all_and_private_filter(self)
    • test_apidocs_tests_excluded_by_default (method, line 294) def test_apidocs_tests_excluded_by_default(self)
    • test_apidocs_constructor_inherits_class_args (method, line 301) def test_apidocs_constructor_inherits_class_args(self)
    • test_apidocs_inheritance_links_and_doc_inheritance (method, line 305) def test_apidocs_inheritance_links_and_doc_inheritance(self)
    • test_apidocs_c_prototype_doc_merges_into_definition (method, line 314) def test_apidocs_c_prototype_doc_merges_into_definition(self)
    • test_apidocs_call_graph_resolved (method, line 322) def test_apidocs_call_graph_resolved(self)
    • test_apidocs_receiver_filter_drops_unproven_method_calls (method, line 328) def test_apidocs_receiver_filter_drops_unproven_method_calls(self)
    • test_apidocs_annotated_receiver_resolves_method (method, line 332) def test_apidocs_annotated_receiver_resolves_method(self)
    • test_apidocs_warnings_cover_every_rule (method, line 336) def test_apidocs_warnings_cover_every_rule(self)
    • test_apidocs_coverage_counts (method, line 346) def test_apidocs_coverage_counts(self)
    • test_apidocs_deterministic (method, line 352) def test_apidocs_deterministic(self)
    • test_apidocs_privacy_mode_strips_text (method, line 360) def test_apidocs_privacy_mode_strips_text(self)
    • test_apidocs_entity_budget_truncates (method, line 368) def test_apidocs_entity_budget_truncates(self)
    • test_apidocs_without_content_uses_parser_symbols (method, line 374) def test_apidocs_without_content_uses_parser_symbols(self)
    • test_apidocs_signature_languages (method, line 383) def test_apidocs_signature_languages(self)
    • setUpClass (method, line 407) def setUpClass(cls)
    • test_apidocs_pages_layout (method, line 413) def test_apidocs_pages_layout(self)
    • test_apidocs_module_page_sections (method, line 418) def test_apidocs_module_page_sections(self)
    • test_apidocs_hierarchy_nests_subclasses (method, line 429) def test_apidocs_hierarchy_nests_subclasses(self)
    • test_apidocs_linker_resolves_references (method, line 433) def test_apidocs_linker_resolves_references(self)
    • test_apidocs_html_is_self_contained_and_escaped (method, line 442) def test_apidocs_html_is_self_contained_and_escaped(self)
    • test_apidocs_html_placeholder_in_payload_stays_literal (method, line 450) def test_apidocs_html_placeholder_in_payload_stays_literal(self)
    • test_apidocs_html_large_payload_is_gzip_base64 (method, line 454) def test_apidocs_html_large_payload_is_gzip_base64(self)
    • test_apidocs_html_compression_disabled_keeps_plain_json (method, line 464) def test_apidocs_html_compression_disabled_keeps_plain_json(self)
    • test_apidocs_writer_writes_and_prunes (method, line 470) def test_apidocs_writer_writes_and_prunes(self)
    • test_apidocs_writer_jsonl_one_file_per_module_one_line_per_entity (method, line 485) def test_apidocs_writer_jsonl_one_file_per_module_one_line_per_entity(self)
    • test_apidocs_writer_prunes_stale_jsonl_and_monolith (method, line 512) def test_apidocs_writer_prunes_stale_jsonl_and_monolith(self)
    • test_apidocs_writer_refuses_symlinked_output (method, line 529) def test_apidocs_writer_refuses_symlinked_output(self)
    • test_apidocs_app_export_and_scanner_skip (method, line 544) def test_apidocs_app_export_and_scanner_skip(self)
  • Depends on: readmenator/_apidocs.py, readmenator/_apidocs_page.py, readmenator/_apidocs_render.py, readmenator/_app.py, readmenator/_config.py, readmenator/_docstrings.py, readmenator/_models.py

tests/test_bundlegraph.py

  • Doc: Contract tests for the edge bundle explorer (circle and sphere views).
  • Layer: testing
  • Language: py
  • Symbols:
    • _node (function, line 19) def _node(nid, doc)
    • _fixture (function, line 24) def _fixture(config)
    • _script_json (function, line 49) def _script_json(html, name)
    • TestBundleGraphPayloadContract (class, line 58) class TestBundleGraphPayloadContract(TestCase)
    • TestBundleGraphRenderContract (class, line 108) class TestBundleGraphRenderContract(TestCase)
    • TestBundleGraphAppContract (class, line 172) class TestBundleGraphAppContract(TestCase)
    • setUp (method, line 61) def setUp(self)
    • test_bundlegraph_groups_follow_community_order_with_unassigned_last (method, line 67) def test_bundlegraph_groups_follow_community_order_with_unassigned_last(self)
    • test_bundlegraph_edges_are_distinct_file_pairs (method, line 73) def test_bundlegraph_edges_are_distinct_file_pairs(self)
    • test_bundlegraph_nodes_on_circle_and_sphere (method, line 81) def test_bundlegraph_nodes_on_circle_and_sphere(self)
    • test_bundlegraph_hub_leads_its_arc (method, line 87) def test_bundlegraph_hub_leads_its_arc(self)
    • test_bundlegraph_empty_payload (method, line 95) def test_bundlegraph_empty_payload(self)
    • test_bundlegraph_privacy_mode_strips_docs (method, line 101) def test_bundlegraph_privacy_mode_strips_docs(self)
    • setUp (method, line 111) def setUp(self)
    • test_bundlegraph_render_fills_placeholders (method, line 118) def test_bundlegraph_render_fills_placeholders(self)
    • test_bundlegraph_render_has_no_network_requests (method, line 127) def test_bundlegraph_render_has_no_network_requests(self)
    • test_bundlegraph_render_has_both_views_and_controls (method, line 134) def test_bundlegraph_render_has_both_views_and_controls(self)
    • test_bundlegraph_render_escapes_untrusted_text (method, line 140) def test_bundlegraph_render_escapes_untrusted_text(self)
    • test_bundlegraph_render_payload_naming_a_token_stays_literal (method, line 151) def test_bundlegraph_render_payload_naming_a_token_stays_literal(self)
    • test_bundlegraph_thumbnail_is_safe_svg (method, line 157) def test_bundlegraph_thumbnail_is_safe_svg(self)
    • test_bundlegraph_write_creates_parent (method, line 164) def test_bundlegraph_write_creates_parent(self)
    • _project (method, line 175) def _project(self, tmp)
    • _config (method, line 180) def _config(self)
    • test_export_diagrams_writes_bundle_page_and_card (method, line 185) def test_export_diagrams_writes_bundle_page_and_card(self)
    • test_bundle_page_skipped_when_disabled (method, line 201) def test_bundle_page_skipped_when_disabled(self)
    • test_export_bundlegraph_cli_entry (method, line 212) def test_export_bundlegraph_cli_entry(self)
    • test_pages_subdir_card_points_into_maps_dir (method, line 222) def test_pages_subdir_card_points_into_maps_dir(self)
  • Depends on: readmenator/_app.py, readmenator/_bundlegraph.py, readmenator/_config.py, readmenator/_forcegraph.py, readmenator/_htmlpack.py, readmenator/_models.py

tests/test_cache.py

  • Doc: Contract tests for the FileCache.
  • Layer: testing
  • Language: py
  • Symbols:
    • TestFileCacheContract (class, line 18) class TestFileCacheContract(TestCase)
    • setUp (method, line 21) def setUp(self)
    • tearDown (method, line 26) def tearDown(self)
    • _write (method, line 30) def _write(self, rel_path, content)
    • test_compute_hash_returns_hex_string (method, line 36) def test_compute_hash_returns_hex_string(self)
    • test_different_content_produces_different_hash (method, line 42) def test_different_content_produces_different_hash(self)
    • test_same_content_produces_same_hash (method, line 49) def test_same_content_produces_same_hash(self)
    • test_load_returns_empty_dict_when_no_cache (method, line 56) def test_load_returns_empty_dict_when_no_cache(self)
    • test_save_and_load_roundtrip (method, line 60) def test_save_and_load_roundtrip(self)
    • test_find_changed_detects_new_files (method, line 66) def test_find_changed_detects_new_files(self)
    • test_find_changed_detects_modified_files (method, line 71) def test_find_changed_detects_modified_files(self)
    • test_find_changed_skips_unchanged_files (method, line 78) def test_find_changed_skips_unchanged_files(self)
    • test_prune_deleted_removes_ghost_entries (method, line 85) def test_prune_deleted_removes_ghost_entries(self)
    • test_compute_hashes_batch (method, line 92) def test_compute_hashes_batch(self)
    • test_nonexistent_file_returns_empty_hash (method, line 100) def test_nonexistent_file_returns_empty_hash(self)
    • test_save_and_load_analysis_roundtrip (method, line 109) def test_save_and_load_analysis_roundtrip(self)
    • test_load_missing_analysis_key_returns_none (method, line 116) def test_load_missing_analysis_key_returns_none(self)
    • test_clear_analysis_specific_key (method, line 120) def test_clear_analysis_specific_key(self)
    • test_clear_analysis_all_keys (method, line 127) def test_clear_analysis_all_keys(self)
    • test_has_changed_since_last_analysis_returns_true_on_first_run (method, line 134) def test_has_changed_since_last_analysis_returns_true_on_first_run(self)
    • test_has_changed_since_last_analysis_returns_false_when_no_changes (method, line 139) def test_has_changed_since_last_analysis_returns_false_when_no_changes(self)
    • test_has_changed_since_last_analysis_returns_true_when_file_changed (method, line 147) def test_has_changed_since_last_analysis_returns_true_when_file_changed(self)
  • Depends on: readmenator/_cache.py, readmenator/_config.py

tests/test_components.py

  • Doc: Contract tests for the component diagram exporter.
  • Layer: testing
  • Language: py
  • Symbols:
    • _node (function, line 17) def _node(nid)
    • _fixture (function, line 25) def _fixture()
    • TestComponentSchemaContract (class, line 46) class TestComponentSchemaContract(TestCase)
    • TestComponentRenderContract (class, line 94) class TestComponentRenderContract(TestCase)
    • TestComponentPageContract (class, line 140) class TestComponentPageContract(TestCase)
    • TestComponentGalleryContract (class, line 238) class TestComponentGalleryContract(TestCase)
    • setUp (method, line 49) def setUp(self)
    • test_top_level_keys_match_schema (method, line 57) def test_top_level_keys_match_schema(self)
    • test_components_carry_entities_and_file_methods (method, line 67) def test_components_carry_entities_and_file_methods(self)
    • test_relations_link_components_with_call_sites (method, line 78) def test_relations_link_components_with_call_sites(self)
    • test_methods_index_keys_use_pipe_separator (method, line 89) def test_methods_index_keys_use_pipe_separator(self)
    • setUp (method, line 97) def setUp(self)
    • test_mermaid_matches_layered_style (method, line 105) def test_mermaid_matches_layered_style(self)
    • test_sanitize_for_mermaid_ids (method, line 114) def test_sanitize_for_mermaid_ids(self)
    • test_overview_lists_related_entities (method, line 118) def test_overview_lists_related_entities(self)
    • test_write_emits_analysis_and_pages (method, line 124) def test_write_emits_analysis_and_pages(self)
    • test_empty_project_yields_empty_diagram (method, line 133) def test_empty_project_yields_empty_diagram(self)
    • setUp (method, line 143) def setUp(self)
    • test_page_draws_nodes_edges_and_links (method, line 152) def test_page_draws_nodes_edges_and_links(self)
    • test_page_nodes_explain_themselves (method, line 162) def test_page_nodes_explain_themselves(self)
    • test_relations_section_lists_call_evidence (method, line 171) def test_relations_section_lists_call_evidence(self)
    • test_build_records_layers_hub_and_counts (method, line 177) def test_build_records_layers_hub_and_counts(self)
    • test_page_has_no_network_requests (method, line 186) def test_page_has_no_network_requests(self)
    • test_page_escapes_untrusted_text (method, line 194) def test_page_escapes_untrusted_text(self)
    • test_thumbnail_is_safe_svg (method, line 204) def test_thumbnail_is_safe_svg(self)
    • test_write_emits_index_page (method, line 213) def test_write_emits_index_page(self)
    • test_page_script_is_valid_javascript (method, line 223) def test_page_script_is_valid_javascript(self)
    • _project (method, line 241) def _project(self, tmp)
    • _config (method, line 246) def _config(self)
    • test_export_diagrams_links_components_card (method, line 251) def test_export_diagrams_links_components_card(self)
    • test_export_pages_links_components_relatively (method, line 266) def test_export_pages_links_components_relatively(self)
    • test_site_copy_has_no_source_links (method, line 284) def test_site_copy_has_no_source_links(self)
    • test_overview_prefixes_source_links (method, line 293) def test_overview_prefixes_source_links(self)
    • test_card_skipped_when_disabled (method, line 305) def test_card_skipped_when_disabled(self)
    • test_docs_collect_components_overview (method, line 319) def test_docs_collect_components_overview(self)
    • test_nested_relations_roll_up (method, line 331) def test_nested_relations_roll_up(self)
  • Depends on: readmenator/_app.py, readmenator/_components.py, readmenator/_config.py, readmenator/_diagrams.py, readmenator/_models.py

tests/test_concepts.py

  • Doc: test_concept_nouns_map_to_file_sets: Noun tokens become concepts mapping to file sets.
  • Layer: testing
  • Language: py
  • Symbols:
    • _node (function, line 8) def _node(fid, symbols, doc)
    • TestConceptGraphContract (class, line 20) class TestConceptGraphContract(TestCase)
    • test_concept_nouns_map_to_file_sets (method, line 21) def test_concept_nouns_map_to_file_sets(self)
    • test_concept_verbs_come_from_structural_edges (method, line 36) def test_concept_verbs_come_from_structural_edges(self)
    • test_concept_atomic_breakdown_splits_camelcase (method, line 53) def test_concept_atomic_breakdown_splits_camelcase(self)
    • test_concept_deterministic_ordering (method, line 62) def test_concept_deterministic_ordering(self)
    • test_concept_disabled_returns_empty_graph (method, line 76) def test_concept_disabled_returns_empty_graph(self)
    • test_concept_dialectic_questions_for_overlap (method, line 85) def test_concept_dialectic_questions_for_overlap(self)
  • Depends on: readmenator/_concepts.py, readmenator/_config.py, readmenator/_models.py

tests/test_config.py

  • Layer: testing
  • Language: py
  • Symbols:
    • TestConfigContract (class, line 7) class TestConfigContract(TestCase)
    • test_config_is_immutable (method, line 8) def test_config_is_immutable(self)
    • test_config_defaults_are_sane (method, line 13) def test_config_defaults_are_sane(self)
    • test_ignore_dirs_are_comprehensive (method, line 24) def test_ignore_dirs_are_comprehensive(self)
    • test_plural_map_covers_all_symbol_types (method, line 30) def test_plural_map_covers_all_symbol_types(self)
    • test_supported_extensions_no_duplicates (method, line 41) def test_supported_extensions_no_duplicates(self)
  • Depends on: readmenator/_config.py

tests/test_cpg.py

  • Doc: TestCodePropertyGraphContract: Contract: CodePropertyGraph generates valid JSON-LD CPG output.
  • Layer: testing
  • Language: py
  • Symbols:
    • TestCodePropertyGraphContract (class, line 11) class TestCodePropertyGraphContract(TestCase)
    • setUp (method, line 14) def setUp(self)
    • _make_node (method, line 18) def _make_node(self, nid, label, lang)
    • _make_sym (method, line 21) def _make_sym(self, name, kind, line)
    • test_generate_returns_valid_json (method, line 24) def test_generate_returns_valid_json(self)
    • test_generate_includes_node_data (method, line 33) def test_generate_includes_node_data(self)
    • test_generate_includes_edges (method, line 49) def test_generate_includes_edges(self)
    • test_generate_includes_metadata (method, line 61) def test_generate_includes_metadata(self)
    • test_privacy_mode_strips_docs (method, line 71) def test_privacy_mode_strips_docs(self)
    • test_sha256_hash_included (method, line 89) def test_sha256_hash_included(self)
    • test_empty_graph_returns_valid_json (method, line 96) def test_empty_graph_returns_valid_json(self)
  • Depends on: readmenator/_config.py, readmenator/_cpg.py, readmenator/_models.py

tests/test_cursorrules.py

  • Doc: Contract tests for the CursorRulesGenerator.
  • Layer: testing
  • Language: py
  • Symbols:
    • TestCursorRulesGeneratorContract (class, line 18) class TestCursorRulesGeneratorContract(TestCase)
    • setUp (method, line 21) def setUp(self)
    • test_generate_returns_string (method, line 25) def test_generate_returns_string(self)
    • test_generate_contains_header (method, line 29) def test_generate_contains_header(self)
    • test_generate_contains_base_rules (method, line 33) def test_generate_contains_base_rules(self)
    • test_generate_includes_layer_constraints (method, line 38) def test_generate_includes_layer_constraints(self)
    • test_generate_includes_god_nodes (method, line 49) def test_generate_includes_god_nodes(self)
    • test_generate_includes_communities (method, line 62) def test_generate_includes_communities(self)
    • test_generate_includes_violations (method, line 82) def test_generate_includes_violations(self)
    • test_generate_limits_violations_to_ten (method, line 95) def test_generate_limits_violations_to_ten(self)
    • test_generate_writes_file_when_project_root (method, line 103) def test_generate_writes_file_when_project_root(self)
    • test_generate_idempotent (method, line 111) def test_generate_idempotent(self)
  • Depends on: readmenator/_config.py, readmenator/_cursorrules_generator.py, readmenator/_models.py

tests/test_dataflow.py

  • Layer: testing
  • Language: py
  • Symbols:
    • _node (function, line 8) def _node(node_id, funcs)
    • _analyze (function, line 17) def _analyze(body)
    • TestDataflowContract (class, line 25) class TestDataflowContract(TestCase)
    • test_config_defaults (method, line 26) def test_config_defaults(self)
    • test_config_immutable (method, line 31) def test_config_immutable(self)
    • test_uninit_use_detected (method, line 37) def test_uninit_use_detected(self)
    • test_initialized_use_clean (method, line 46) def test_initialized_use_clean(self)
    • test_params_count_as_initialized (method, line 50) def test_params_count_as_initialized(self)
    • test_scanf_addr_counts_as_init (method, line 58) def test_scanf_addr_counts_as_init(self)
    • test_dead_store_detected (method, line 62) def test_dead_store_detected(self)
    • test_read_store_clean (method, line 67) def test_read_store_clean(self)
    • test_unchecked_alloc_detected (method, line 71) def test_unchecked_alloc_detected(self)
    • test_checked_alloc_clean (method, line 78) def test_checked_alloc_clean(self)
    • test_disabled_returns_empty (method, line 84) def test_disabled_returns_empty(self)
    • test_missing_content_skipped (method, line 91) def test_missing_content_skipped(self)
    • test_issue_cap_respected (method, line 96) def test_issue_cap_respected(self)
    • test_plain_assignment_is_not_a_declaration (method, line 105) def test_plain_assignment_is_not_a_declaration(self)
    • test_subscript_store_counts_as_init (method, line 110) def test_subscript_store_counts_as_init(self)
    • test_asm_output_counts_as_init (method, line 116) def test_asm_output_counts_as_init(self)
    • test_fd_lt_zero_counts_as_checked (method, line 123) def test_fd_lt_zero_counts_as_checked(self)
    • test_map_failed_counts_as_checked (method, line 129) def test_map_failed_counts_as_checked(self)
    • test_member_null_check_counts (method, line 136) def test_member_null_check_counts(self)
    • test_loop_carried_var_not_dead (method, line 144) def test_loop_carried_var_not_dead(self)
    • test_line_numbers_survive_subscript_stores (method, line 156) def test_line_numbers_survive_subscript_stores(self)
    • test_member_store_not_local_assign (method, line 167) def test_member_store_not_local_assign(self)
    • test_array_arg_to_filler_counts_as_init (method, line 173) def test_array_arg_to_filler_counts_as_init(self)
    • test_array_arg_to_readonly_still_uninit (method, line 181) def test_array_arg_to_readonly_still_uninit(self)
    • test_array_filled_in_decl_init_call (method, line 188) def test_array_filled_in_decl_init_call(self)
    • test_static_never_uninit (method, line 196) def test_static_never_uninit(self)
    • test_derived_pointer_not_dead (method, line 203) def test_derived_pointer_not_dead(self)
    • test_sizeof_is_not_a_read (method, line 216) def test_sizeof_is_not_a_read(self)
    • test_block_comment_malloc_ignored (method, line 225) def test_block_comment_malloc_ignored(self)
    • test_address_alias_pointer_not_dead (method, line 234) def test_address_alias_pointer_not_dead(self)
    • test_array_store_before_read_suppresses_uninit (method, line 248) def test_array_store_before_read_suppresses_uninit(self)
    • test_same_line_use_not_dead (method, line 256) def test_same_line_use_not_dead(self)
    • test_same_line_only_assign_is_dead (method, line 264) def test_same_line_only_assign_is_dead(self)
    • test_alias_pointer_store_initializes_array (method, line 272) def test_alias_pointer_store_initializes_array(self)
    • test_inline_alias_fill_suppresses_uninit (method, line 281) def test_inline_alias_fill_suppresses_uninit(self)
    • test_function_pointer_call_counts_as_use (method, line 290) def test_function_pointer_call_counts_as_use(self)
    • test_plain_call_is_not_a_local_use (method, line 298) def test_plain_call_is_not_a_local_use(self)
    • test_local_struct_does_not_truncate_span (method, line 305) def test_local_struct_does_not_truncate_span(self)
    • test_file_scope_symbol_still_bounds_span (method, line 329) def test_file_scope_symbol_still_bounds_span(self)
    • test_url_string_does_not_truncate_line (method, line 344) def test_url_string_does_not_truncate_line(self)
    • test_assert_macro_counts_as_null_check (method, line 352) def test_assert_macro_counts_as_null_check(self)
    • test_multiline_call_assigns_array_arg (method, line 360) def test_multiline_call_assigns_array_arg(self)
    • test_address_taken_suppresses_dead_store (method, line 369) def test_address_taken_suppresses_dead_store(self)
    • test_member_store_initializes_base (method, line 377) def test_member_store_initializes_base(self)
  • Depends on: readmenator/_config.py, readmenator/_dataflow.py, readmenator/_models.py

tests/test_dead_code.py

  • Doc: Contract tests for the DeadCodeStripper.
  • Layer: testing
  • Language: py
  • Symbols:
    • TestDeadCodeStripperContract (class, line 16) class TestDeadCodeStripperContract(TestCase)
    • setUp (method, line 19) def setUp(self)
    • _make_symbol (method, line 23) def _make_symbol(self, name, kind)
    • _make_node (method, line 26) def _make_node(self, nid, symbols)
    • _make_edge (method, line 35) def _make_edge(self, src, tgt)
    • test_identify_empty_graph_returns_empty (method, line 38) def test_identify_empty_graph_returns_empty(self)
    • test_identify_finds_dead_symbol (method, line 42) def test_identify_finds_dead_symbol(self)
    • test_identify_excludes_entry_points (method, line 53) def test_identify_excludes_entry_points(self)
    • test_identify_excludes_app_entry_point (method, line 61) def test_identify_excludes_app_entry_point(self)
    • test_identify_excludes_init_entry_point (method, line 69) def test_identify_excludes_init_entry_point(self)
    • test_identify_recommends_review_for_classes (method, line 77) def test_identify_recommends_review_for_classes(self)
    • test_identify_recommends_trash_for_functions (method, line 85) def test_identify_recommends_trash_for_functions(self)
    • test_identify_recommends_trash_for_variables (method, line 93) def test_identify_recommends_trash_for_variables(self)
    • test_all_symbols_imported_returns_empty (method, line 101) def test_all_symbols_imported_returns_empty(self)
    • test_reports_sorted_by_file_path (method, line 113) def test_reports_sorted_by_file_path(self)
  • Depends on: readmenator/_config.py, readmenator/_dead_code.py, readmenator/_models.py

Next: KB_tests_p2.md