Skip to content

Test coverage #16

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 35 commits into
base: main
Choose a base branch
from
Open

Test coverage #16

wants to merge 35 commits into from

Conversation

jamesbrink
Copy link
Member

No description provided.

jamesbrink and others added 10 commits April 3, 2025 22:30
- Add workflow_dispatch trigger with deploy_website input to CI pipeline
- Create deploy command in web shell with AWS profile and env var support
- Add comprehensive error handling and credential validation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Change 'project' to 'Creation' in footer text
- Improve branding consistency with Utensils company style

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Update string context test to use get_option instead of search_options
- Fix return format of options_by_prefix tests to use array instead of dict
- Update stats tests to use correct field names (total_options, by_category)
- Add explicit None checks to satisfy type checker
- Fix module patching in test_init.py with proper setUp/tearDown
- Remove unused imports to fix linting issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add tests for wildcard search behavior in search tools
- Add tests for context loading states and error handling
- Add cross-platform cache compatibility tests
- Improve HTML parsing robustness in integration tests
- Fix multi-word query handling test

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add wildcard search tests with various search patterns
- Add error handling tests for Home Manager context
- Add cross-platform compatibility tests for Windows
- Add multi-platform integration tests
- Add test coverage for Darwin client

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Remove unused imports and variables in test files to fix flake8 linting errors:
- Remove unused imports like re, uuid, sys, asyncio, logging, importlib
- Fix unused variable warnings by replacing variable assignments with direct calls
- Keep implementation code untouched as per requirements

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Fixed attribute access errors in HomeManagerClient and DarwinClient tests
- Added proper null safety checks in integration tests
- Corrected indentation issues in test files
- Fixed async coroutine warnings by proper mocking
- Updated dictionary access patterns for type safety

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Copy link

github-actions bot commented Apr 4, 2025

Code Complexity Analysis

╒════════════════════╤══════════════╤═════════════════╤════════════════════╕
│ File               │ Cyclomatic   │ Lines of Code   │ Maintainability    │
│                    │ Complexity   │                 │ Index              │
╞════════════════════╪══════════════╪═════════════════╪════════════════════╡
│ tests/test_init.py │ - -> 11      │ - -> 95         │ - ->               │
│                    │              │                 │ 80.14204301655342  │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 14      │ - -> 223        │ - ->               │
│ t_home_manager_err │              │                 │ 54.590383791005685 │
│ or_handling.py     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 14      │ - -> 302        │ - ->               │
│ t_home_manager_loa │              │                 │ 72.73775056322033  │
│ ding.py            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 15      │ - -> 228        │ - ->               │
│ _home_manager_wind │              │                 │ 64.12838849390154  │
│ ows_compatibility. │              │                 │                    │
│ py                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 29      │ - -> 246        │ - ->               │
│ _home_manager_sear │              │                 │ 55.667591190139355 │
│ ch.py              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 16      │ - -> 239        │ - ->               │
│ in/test_darwin_cro │              │                 │ 64.26747922550021  │
│ ss_platform.py     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ 8 -> 15      │ 188 -> 275      │ 75.7855 -> 63.1361 │
│ ome_manager_hierar │              │                 │                    │
│ chy.py             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 26      │ - -> 643        │ - ->               │
│ ixos_tools.py      │              │                 │ 61.02915365962691  │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 37      │ - -> 626        │ - ->               │
│ ome_manager_tools. │              │                 │ 58.123807832118274 │
│ py                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ 85 -> 86     │ 323 -> 391      │ 49.3569 -> 46.7406 │
│ test_home_manager_ │              │                 │                    │
│ integration.py     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 23      │ - -> 240        │ - ->               │
│ test_home_manager_ │              │                 │ 58.80948393805299  │
│ multi_platform.py  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/utils/test_c │ - -> 4       │ - -> 112        │ - ->               │
│ ache_helpers_windo │              │                 │ 76.46597623634594  │
│ ws.py              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 10      │ - -> 182        │ - ->               │
│ ross_platform_home │              │                 │ 75.67698611731774  │
│ _manager.py        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/test_init.py │ - -> 3       │ -               │ -                  │
│ :TestPackageInit.t │              │                 │                    │
│ earDown            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/test_init.py │ - -> 2       │ -               │ -                  │
│ :TestPackageInit   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/test_init.py │ - -> 2       │ -               │ -                  │
│ :TestPackageInit.s │              │                 │                    │
│ etUp               │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/test_init.py │ - -> 1       │ -               │ -                  │
│ :TestPackageInit.t │              │                 │                    │
│ est_version_from_i │              │                 │                    │
│ mportlib_metadata  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/test_init.py │ - -> 1       │ -               │ -                  │
│ :TestPackageInit.t │              │                 │                    │
│ est_version_from_i │              │                 │                    │
│ mportlib_metadata_ │              │                 │                    │
│ package_not_found  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/test_init.py │ - -> 1       │ -               │ -                  │
│ :TestPackageInit.t │              │                 │                    │
│ est_version_from_p │              │                 │                    │
│ kg_resources       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/test_init.py │ - -> 1       │ -               │ -                  │
│ :TestPackageInit.t │              │                 │                    │
│ est_version_fallba │              │                 │                    │
│ ck_when_all_method │              │                 │                    │
│ s_fail             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 2       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_searc │              │                 │                    │
│ h_options_with_loa │              │                 │                    │
│ ding_in_progress   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_searc │              │                 │                    │
│ h_options_with_loa │              │                 │                    │
│ ding_error         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_searc │              │                 │                    │
│ h_options_with_cli │              │                 │                    │
│ ent_exception      │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_o │              │                 │                    │
│ ption_with_loading │              │                 │                    │
│ _in_progress       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_o │              │                 │                    │
│ ption_with_loading │              │                 │                    │
│ _error             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_o │              │                 │                    │
│ ption_with_client_ │              │                 │                    │
│ exception          │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_o │              │                 │                    │
│ ption_not_found    │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_o │              │                 │                    │
│ ptions_by_prefix_w │              │                 │                    │
│ ith_loading_in_pro │              │                 │                    │
│ gress              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_o │              │                 │                    │
│ ptions_by_prefix_w │              │                 │                    │
│ ith_loading_error  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_o │              │                 │                    │
│ ptions_list_with_l │              │                 │                    │
│ oading_in_progress │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_s │              │                 │                    │
│ tats_with_loading_ │              │                 │                    │
│ in_progress        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_err │              │                 │                    │
│ or_handling.py:Tes │              │                 │                    │
│ tHomeManagerErrorH │              │                 │                    │
│ andling.test_get_s │              │                 │                    │
│ tats_with_loading_ │              │                 │                    │
│ error              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 2       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g                  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 2       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ gThreads           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g.setUp            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g.test_context_loa │              │                 │                    │
│ ding_in_progress   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g.test_context_loa │              │                 │                    │
│ ding_error         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g.test_context_loa │              │                 │                    │
│ ded_success        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g.test_context_get │              │                 │                    │
│ _status_loading    │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g.test_context_get │              │                 │                    │
│ _status_error      │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ g.test_context_get │              │                 │                    │
│ _status_loaded     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ gThreads.test_back │              │                 │                    │
│ ground_loading     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ gThreads.test_ensu │              │                 │                    │
│ re_loaded          │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/contexts/tes │ - -> 1       │ -               │ -                  │
│ t_home_manager_loa │              │                 │                    │
│ ding.py:TestHomeMa │              │                 │                    │
│ nagerContextLoadin │              │                 │                    │
│ gThreads.test_inva │              │                 │                    │
│ lidate_cache       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 3       │ -               │ -                  │
│ _home_manager_wind │              │                 │                    │
│ ows_compatibility. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ WindowsCompatibili │              │                 │                    │
│ ty                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 3       │ -               │ -                  │
│ _home_manager_wind │              │                 │                    │
│ ows_compatibility. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ WindowsCompatibili │              │                 │                    │
│ ty.test_windows_fi │              │                 │                    │
│ le_locking_compati │              │                 │                    │
│ bility             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 3       │ -               │ -                  │
│ _home_manager_wind │              │                 │                    │
│ ows_compatibility. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ URLHandlingCrossPl │              │                 │                    │
│ atform             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 2       │ -               │ -                  │
│ _home_manager_wind │              │                 │                    │
│ ows_compatibility. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ WindowsCompatibili │              │                 │                    │
│ ty.test_windows_pa │              │                 │                    │
│ th_normalization   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 2       │ -               │ -                  │
│ _home_manager_wind │              │                 │                    │
│ ows_compatibility. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ URLHandlingCrossPl │              │                 │                    │
│ atform.test_url_ha │              │                 │                    │
│ ndling_cross_platf │              │                 │                    │
│ orm                │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_wind │              │                 │                    │
│ ows_compatibility. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ WindowsCompatibili │              │                 │                    │
│ ty.test_windows_fi │              │                 │                    │
│ le_path_handling   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_wind │              │                 │                    │
│ ows_compatibility. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ WindowsCompatibili │              │                 │                    │
│ ty.test_windows_ca │              │                 │                    │
│ che_write_operatio │              │                 │                    │
│ ns                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 10      │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_prefix_search │              │                 │                    │
│ _behavior          │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 6       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_wildcard_sear │              │                 │                    │
│ ch_prioritization  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 3       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 2       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ setup_method       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_wildcard_sear │              │                 │                    │
│ ch_exact_match     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_wildcard_sear │              │                 │                    │
│ ch_with_special_ch │              │                 │                    │
│ aracters           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_create_wildca │              │                 │                    │
│ rd_query_behavior  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_wildcard_sear │              │                 │                    │
│ ch_partial_match   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_multi_term_se │              │                 │                    │
│ arch               │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_case_insensit │              │                 │                    │
│ ive_search         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_empty_search_ │              │                 │                    │
│ results            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/test │ - -> 1       │ -               │ -                  │
│ _home_manager_sear │              │                 │                    │
│ ch.py:TestHomeMana │              │                 │                    │
│ gerWildcardSearch. │              │                 │                    │
│ test_top_level_pre │              │                 │                    │
│ fix_search         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 3       │ -               │ -                  │
│ in/test_darwin_cro │              │                 │                    │
│ ss_platform.py:Tes │              │                 │                    │
│ tDarwinCrossPlatfo │              │                 │                    │
│ rmCompatibility    │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 3       │ -               │ -                  │
│ in/test_darwin_cro │              │                 │                    │
│ ss_platform.py:Tes │              │                 │                    │
│ tDarwinClientError │              │                 │                    │
│ Handling           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 2       │ -               │ -                  │
│ in/test_darwin_cro │              │                 │                    │
│ ss_platform.py:Tes │              │                 │                    │
│ tDarwinCrossPlatfo │              │                 │                    │
│ rmCompatibility.te │              │                 │                    │
│ st_darwin_client_p │              │                 │                    │
│ latform_specific_p │              │                 │                    │
│ aths               │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 2       │ -               │ -                  │
│ in/test_darwin_cro │              │                 │                    │
│ ss_platform.py:Tes │              │                 │                    │
│ tDarwinCrossPlatfo │              │                 │                    │
│ rmCompatibility.te │              │                 │                    │
│ st_darwin_client_u │              │                 │                    │
│ rl_handling_cross_ │              │                 │                    │
│ platform           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 2       │ -               │ -                  │
│ in/test_darwin_cro │              │                 │                    │
│ ss_platform.py:Tes │              │                 │                    │
│ tDarwinCrossPlatfo │              │                 │                    │
│ rmCompatibility.te │              │                 │                    │
│ st_darwin_client_p │              │                 │                    │
│ arse_options_with_ │              │                 │                    │
│ various_html_struc │              │                 │                    │
│ tures              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 2       │ -               │ -                  │
│ in/test_darwin_cro │              │                 │                    │
│ ss_platform.py:Tes │              │                 │                    │
│ tDarwinClientError │              │                 │                    │
│ Handling.test_netw │              │                 │                    │
│ ork_error_handling │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/clients/darw │ - -> 2       │ -               │ -                  │
│ in/test_darwin_cro │              │                 │                    │
│ ss_platform.py:Tes │              │                 │                    │
│ tDarwinClientError │              │                 │                    │
│ Handling.test_cach │              │                 │                    │
│ e_resilience       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 3       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerHierarchy.test │              │                 │                    │
│ _hierarchical_navi │              │                 │                    │
│ gation             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 2       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerSpecialQueries │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerHierarchy.test │              │                 │                    │
│ _wildcard_search_b │              │                 │                    │
│ ehavior            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerHierarchy.test │              │                 │                    │
│ _options_by_prefix │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerSpecialQueries │              │                 │                    │
│ .setUp             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerSpecialQueries │              │                 │                    │
│ .test_search_with_ │              │                 │                    │
│ colon_query        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerSpecialQueries │              │                 │                    │
│ .test_search_with_ │              │                 │                    │
│ error              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerSpecialQueries │              │                 │                    │
│ .test_search_no_re │              │                 │                    │
│ sults              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_hierar │              │                 │                    │
│ chy.py:TestHomeMan │              │                 │                    │
│ agerSpecialQueries │              │                 │                    │
│ .test_multi_word_q │              │                 │                    │
│ uery               │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 2       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.setUp   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_se │              │                 │                    │
│ tup_context_and_ch │              │                 │                    │
│ annel              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_fo │              │                 │                    │
│ rmat_search_result │              │                 │                    │
│ s_packages         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_fo │              │                 │                    │
│ rmat_search_result │              │                 │                    │
│ s_options          │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_fo │              │                 │                    │
│ rmat_search_result │              │                 │                    │
│ s_programs         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_fo │              │                 │                    │
│ rmat_package_info  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_fo │              │                 │                    │
│ rmat_license       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_fo │              │                 │                    │
│ rmat_maintainers   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_cr │              │                 │                    │
│ eate_github_link   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_si │              │                 │                    │
│ mple_html_to_markd │              │                 │                    │
│ own                │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ge │              │                 │                    │
│ t_service_suggesti │              │                 │                    │
│ on                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_fo │              │                 │                    │
│ rmat_option_info   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_search_with_co │              │                 │                    │
│ ntext              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_search_with_dy │              │                 │                    │
│ namic_context      │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_search_with_no │              │                 │                    │
│ ne_context         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_search_with_mu │              │                 │                    │
│ lti_word_query     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_info_with_cont │              │                 │                    │
│ ext                │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_info_with_dyna │              │                 │                    │
│ mic_context        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_info_with_none │              │                 │                    │
│ _context           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_stats_with_con │              │                 │                    │
│ text               │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_stats_with_dyn │              │                 │                    │
│ amic_context       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ni │              │                 │                    │
│ xos_stats_with_non │              │                 │                    │
│ e_context          │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_ch │              │                 │                    │
│ eck_request_ready  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_n │ - -> 1       │ -               │ -                  │
│ ixos_tools.py:Test │              │                 │                    │
│ NixOSTools.test_re │              │                 │                    │
│ gister_nixos_tools │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 3       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_check_h │              │                 │                    │
│ ome_manager_ready  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 2       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.setUp        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_search_with_ │              │                 │                    │
│ context            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_search_with_ │              │                 │                    │
│ dynamic_context    │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_search_with_ │              │                 │                    │
│ string_context     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_search_with_ │              │                 │                    │
│ none_context       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_search_with_ │              │                 │                    │
│ string_context_err │              │                 │                    │
│ or                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_search_no_re │              │                 │                    │
│ sults              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_search_with_ │              │                 │                    │
│ error              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_info_with_co │              │                 │                    │
│ ntext              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_info_with_dy │              │                 │                    │
│ namic_context      │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_info_with_st │              │                 │                    │
│ ring_context       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_info_with_no │              │                 │                    │
│ ne_context         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_info_with_st │              │                 │                    │
│ ring_context_error │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_info_not_fou │              │                 │                    │
│ nd                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_stats_with_c │              │                 │                    │
│ ontext             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_stats_with_d │              │                 │                    │
│ ynamic_context     │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_stats_with_s │              │                 │                    │
│ tring_context      │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_stats_with_n │              │                 │                    │
│ one_context        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_stats_with_s │              │                 │                    │
│ tring_context_erro │              │                 │                    │
│ r                  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_list_options │              │                 │                    │
│ _with_context      │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_list_options │              │                 │                    │
│ _with_dynamic_cont │              │                 │                    │
│ ext                │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_list_options │              │                 │                    │
│ _with_string_conte │              │                 │                    │
│ xt                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_list_options │              │                 │                    │
│ _with_none_context │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_list_options │              │                 │                    │
│ _with_string_conte │              │                 │                    │
│ xt_error           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_options_by_p │              │                 │                    │
│ refix_with_context │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_options_by_p │              │                 │                    │
│ refix_with_dynamic │              │                 │                    │
│ _context           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_options_by_p │              │                 │                    │
│ refix_with_string_ │              │                 │                    │
│ context            │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_options_by_p │              │                 │                    │
│ refix_with_none_co │              │                 │                    │
│ ntext              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_options_by_p │              │                 │                    │
│ refix_with_string_ │              │                 │                    │
│ context_error      │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_home_ma │              │                 │                    │
│ nager_options_by_p │              │                 │                    │
│ refix_no_results   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_check_r │              │                 │                    │
│ equest_ready       │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/tools/test_h │ - -> 1       │ -               │ -                  │
│ ome_manager_tools. │              │                 │                    │
│ py:TestHomeManager │              │                 │                    │
│ Tools.test_registe │              │                 │                    │
│ r_home_manager_too │              │                 │                    │
│ ls                 │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ 46 -> 44     │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ integration.py:Tes │              │                 │                    │
│ tHomeManagerDocStr │              │                 │                    │
│ ucture.test_extrac │              │                 │                    │
│ t_sample_options   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ 22 -> 18     │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ integration.py:Tes │              │                 │                    │
│ tHomeManagerDocStr │              │                 │                    │
│ ucture             │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 7       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ integration.py:Tes │              │                 │                    │
│ tHomeManagerDocStr │              │                 │                    │
│ ucture.test_parse_ │              │                 │                    │
│ option_with_multip │              │                 │                    │
│ le_html_structures │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 5       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagerMul │              │                 │                    │
│ tiPlatformIntegrat │              │                 │                    │
│ ion.test_state_per │              │                 │                    │
│ sistence_cross_pla │              │                 │                    │
│ tform              │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 4       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagerMul │              │                 │                    │
│ tiPlatformIntegrat │              │                 │                    │
│ ion.test_platform_ │              │                 │                    │
│ agnostic_file_load │              │                 │                    │
│ ing                │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 3       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagerMul │              │                 │                    │
│ tiPlatformIntegrat │              │                 │                    │
│ ion                │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 3       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagetCli │              │                 │                    │
│ entStringNormaliza │              │                 │                    │
│ tion               │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 2       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagerMul │              │                 │                    │
│ tiPlatformIntegrat │              │                 │                    │
│ ion.test_search_to │              │                 │                    │
│ ol_cross_platform  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 2       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagerMul │              │                 │                    │
│ tiPlatformIntegrat │              │                 │                    │
│ ion.test_info_tool │              │                 │                    │
│ _cross_platform    │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 2       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagetCli │              │                 │                    │
│ entStringNormaliza │              │                 │                    │
│ tion.test_consiste │              │                 │                    │
│ nt_string_handling │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 1       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagerMul │              │                 │                    │
│ tiPlatformIntegrat │              │                 │                    │
│ ion.setup_method   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/integration/ │ - -> 1       │ -               │ -                  │
│ test_home_manager_ │              │                 │                    │
│ multi_platform.py: │              │                 │                    │
│ TestHomeManagerMul │              │                 │                    │
│ tiPlatformIntegrat │              │                 │                    │
│ ion.teardown_metho │              │                 │                    │
│ d                  │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/utils/test_c │ - -> 2       │ -               │ -                  │
│ ache_helpers_windo │              │                 │                    │
│ ws.py:TestWindowsA │              │                 │                    │
│ tomicWrite         │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/utils/test_c │ - -> 1       │ -               │ -                  │
│ ache_helpers_windo │              │                 │                    │
│ ws.py:TestWindowsA │              │                 │                    │
│ tomicWrite.test_at │              │                 │                    │
│ omic_write_windows │              │                 │                    │
│ _replace           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/utils/test_c │ - -> 1       │ -               │ -                  │
│ ache_helpers_windo │              │                 │                    │
│ ws.py:TestWindowsA │              │                 │                    │
│ tomicWrite.test_at │              │                 │                    │
│ omic_write_windows │              │                 │                    │
│ _replace_failure   │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 2       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform          │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 2       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform.tearDown │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 1       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform.setUp    │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 1       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform.test_cac │              │                 │                    │
│ he_directory_permi │              │                 │                    │
│ ssions_unix        │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 1       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform.test_url │              │                 │                    │
│ _caching           │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 1       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform.test_sim │              │                 │                    │
│ ple_cache_behavior │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 1       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform.test_sav │              │                 │                    │
│ e_and_load_cache_d │              │                 │                    │
│ ata                │              │                 │                    │
├────────────────────┼──────────────┼─────────────────┼────────────────────┤
│ tests/cache/test_c │ - -> 1       │ -               │ -                  │
│ ross_platform_home │              │                 │                    │
│ _manager.py:TestHo │              │                 │                    │
│ meManagerCacheCros │              │                 │                    │
│ sPlatform.test_inv │              │                 │                    │
│ alidate_cache      │              │                 │                    │
╘════════════════════╧══════════════╧═════════════════╧════════════════════╛

For more details, check the complexity-report artifact in the workflow run.

Copy link

codecov bot commented Apr 4, 2025

❌ 15 Tests Failed:

Tests completed Failed Passed Skipped
560 15 545 22
View the top 3 failed test(s) by shortest run time
tests/clients/test_home_manager_windows_compatibility.py::TestHomeManagerWindowsCompatibility::test_windows_path_normalization
Stack Traces | 0s run time
self = <tests.clients.test_home_manager_windows_compatibility.TestHomeManagerWindowsCompatibility object at 0x10685c310>

    def test_windows_path_normalization(self):
        """Test Windows path normalization."""
        # Test with Windows platform
        with mock.patch("sys.platform", "win32"):
            # Create paths with different casing/separators
            paths = [
                r"C:\Users\testuser\AppData\Local\mcp_nixos\Cache",
                r"c:\users\testuser\appdata\local\mcp_nixos\cache",
                r"C:.../Local/mcp_nixos/Cache",
            ]
    
            # Normalize all paths
            normalized_paths = [os.path.normcase(p) for p in paths]
    
            # All should be equivalent on Windows
>           assert len(set(normalized_paths)) == 1, "Windows path normalization failed"
E           AssertionError: Windows path normalization failed
E           assert 3 == 1
E            +  where 3 = len({'C:\\Users\\testuser\\AppData\\Local\\mcp_nixos\\Cache', 'c:\\users\\testuser\\appdata\\local\\mcp_nixos\\cache', 'C:.../Local/mcp_nixos/Cache'})
E            +    where {'C:\\Users\\testuser\\AppData\\Local\\mcp_nixos\\Cache', 'c:\\users\\testuser\\appdata\\local\\mcp_nixos\\cache', 'C:.../Local/mcp_nixos/Cache'} = set(['C:\\Users\\testuser\\AppData\\Local\\mcp_nixos\\Cache', 'c:\\users\\testuser\\appdata\\local\\mcp_nixos\\cache', 'C:.../Local/mcp_nixos/Cache'])

tests/clients/test_home_manager_windows_compatibility.py:199: AssertionError
tests/clients/test_home_manager_windows_compatibility.py::TestHomeManagerURLHandlingCrossPlatform::test_url_handling_cross_platform
Stack Traces | 0.001s run time
self = <tests.clients.test_home_manager_windows_compatibility.TestHomeManagerURLHandlingCrossPlatform object at 0x10685dd10>

    def test_url_handling_cross_platform(self):
        """Test URL handling works the same across platforms."""
        # Test with different platforms
        platforms = ["win32", "darwin", "linux"]
    
        for platform in platforms:
            with mock.patch("sys.platform", platform):
                # Create a client
                client = HomeManagerClient()
    
                # Internal _fetch_url should work the same regardless of platform
                # Mock the fetch to avoid actual network requests
                with mock.patch.object(client.html_client, "fetch") as mock_fetch:
                    mock_fetch.return_value = "<html><body>Test</body></html>"
    
                    # Call fetch_url
>                   client.fetch_url("https://example.com")

tests/clients/test_home_manager_windows_compatibility.py:221: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <mcp_nixos.clients.home_manager_client.HomeManagerClient object at 0x1198395d0>
url = 'https://example.com', force_refresh = False

    def fetch_url(self, url: str, force_refresh: bool = False) -> str:
        """Fetch HTML content from a URL with filesystem caching."""
        logger.debug(f"Fetching URL: {url}")
        try:
>           content, metadata = self.html_client.fetch(url, force_refresh=force_refresh)
E           ValueError: too many values to unpack (expected 2)

mcp_nixos/clients/home_manager_client.py:64: ValueError
tests/clients/darwin/test_darwin_cross_platform.py::TestDarwinCrossPlatformCompatibility::test_darwin_client_url_handling_cross_platform
Stack Traces | 0.002s run time
self = <tests.clients.darwin.test_darwin_cross_platform.TestDarwinCrossPlatformCompatibility object at 0x1069eefd0>

    def test_darwin_client_url_handling_cross_platform(self):
        """Test that URL handling works across platforms."""
        # Create a test cache
        test_cache = HTMLCache(cache_dir=tempfile.mkdtemp(prefix="mcp_nixos_test_"))
        try:
            # Create a mock client that uses our test cache
            with mock.patch("mcp_nixos.clients.html_client.HTMLClient") as MockHTMLClient:
                mock_client = MockHTMLClient.return_value
                mock_client._cache = test_cache
    
                # Simulate a URL fetch without making an actual network request
                url = "https://daiderd..../nix-darwin/options/index.html"
                html_content = "<html><body>Test Darwin Options</body></html>"
    
                # Mock the fetch method to return our test content
                mock_client.fetch.return_value = html_content
    
                # Create the Darwin client with our mock
                with mock.patch("mcp_nixos.clients.darwin.darwin_client.HTMLClient", return_value=mock_client):
                    client = DarwinClient()
    
                    # Call load_options which should use our mocked fetch
                    # Use async mock to avoid awaiting coroutine
                    client.load_options = mock.AsyncMock()
                    client.load_options.return_value = {"option": {"name": "security.pam.enableSudoTouchIdAuth"}}
    
                    # Verify the URL was correctly fetched
>                   mock_client.fetch.assert_called_with(url, force_refresh=False)

.../clients/darwin/test_darwin_cross_platform.py:90: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <MagicMock name='HTMLClient().fetch' id='4717093840'>
args = ('https://daiderd..../nix-darwin/options/index.html',)
kwargs = {'force_refresh': False}
expected = "fetch('https://daiderd..../nix-darwin/options/index.html', force_refresh=False)"
actual = 'not called.'
error_message = "expected call not found.\nExpected: fetch('https://daiderd..../nix-darwin/options/index.html', force_refresh=False)\n  Actual: not called."

    def assert_called_with(self, /, *args, **kwargs):
        """assert that the last call was made with the specified arguments.
    
        Raises an AssertionError if the args and keyword args passed in are
        different to the last call to the mock."""
        if self.call_args is None:
            expected = self._format_mock_call_signature(args, kwargs)
            actual = 'not called.'
            error_message = ('expected call not found.\nExpected: %s\n  Actual: %s'
                    % (expected, actual))
>           raise AssertionError(error_message)
E           AssertionError: expected call not found.
E           Expected: fetch('https://daiderd..../nix-darwin/options/index.html', force_refresh=False)
E             Actual: not called.

.../nix/store/dxddp6nsbryq1lnp61srqf90nb3n3s0f-python3-3.11.11/lib/python3.11/unittest/mock.py:930: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

…ssues

- Replace pipe-separated function names with flex wrap layout for better mobile display
- Add break-all to prevent long text from causing horizontal overflow
- Improve table responsiveness with smaller padding and font sizes on mobile
- Maintain consistent styling across all sections following design system
- Wrap table in additional container for better width control
- Change 'Add to your Claude Code configuration file' to 'Add to your MCP configuration file'
- Change 'Then start asking Claude about NixOS packages and configuration options!' to 'Start leveraging NixOS package information and configuration options in your workflow!'
- Make language more inclusive of different platforms that use MCP configurations
- Added real sample responses for multiple MCP-NixOS tools:
  - home_manager_options_by_prefix
  - home_manager_stats
  - darwin_info
  - darwin_list_options
  - darwin_options_by_prefix
  - darwin_stats
- Improved CodeBlock component styling with consistent headers
- Fixed HTML entity rendering in code examples
- Added a new Overview section above the API Reference
- Created a grid layout with four informative cards:
  - NixOS Tools overview
  - Home Manager Tools overview
  - nix-darwin Tools overview
  - Why Use MCP-NixOS benefits section
- Fixed lint issues with proper HTML entity escaping
- Improved readability with consistent styling and formatting
- Replaced grid layout with a more visually appealing hierarchical design
- Added gradient background and improved spacing for better readability
- Incorporated icons for each tool category for visual distinction
- Added hover effects and interactive elements for better engagement
- Organized tools in collapsible sections with clear visual hierarchy
- Used NixOS color palette consistently throughout the design
- Improved mobile responsiveness with better column layouts
…le responses

- Replaced all AnchorHeading components with regular h5 tags for example sections
- Maintained SVG icons and styling for visual consistency
- Added detailed sample responses for home_manager_search and home_manager_info tools
- Improved documentation with realistic tool output examples
- Ensured consistent styling across all documentation sections
- Added information about MCP-NixOS being a stdio implementation using FastMCP
- Added a link to the FastMCP GitHub repository for reference
- Created a new feature card highlighting the FastMCP implementation
- Reorganized the feature cards to accommodate the new information
- Improved the overview section with more technical context
- Added comprehensive JSON response format section at the top of API Reference
- Clarified that Home Manager and nix-darwin data are parsed from HTML docs
- Added example JSON structure with explanation of key fields
- Included note about documentation examples showing only result content
- Move Response Format section to top of API Reference
- Rename 'How to Use with AI Assistants' to 'Basic Chat Examples with AI Assistants'
- Improve explanation of usage examples to clarify AI tool access
- Fix HTML structure and nesting issues
- Properly escape HTML entities
jamesbrink and others added 7 commits April 4, 2025 12:59
…ing instructions

- Add documentation for CollapsibleSection component and client-side React usage
- Include TypeScript checking commands: npx tsc --noEmit
- Add Prettier verification commands: npx prettier --check/--write
- Document manual development site deployment process
- Synchronize changes to all rule files

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Reorganized environment variables into Essential, Advanced, and Development categories
- Added default values for all environment variables
- Added configuration section anchor ID for direct navigation
- Added cross-links between pages to the configuration documentation
- Clarified that ELASTICSEARCH_URL is optional for most users
- Fixed import for Link component in usage page
…locks, standardize header styles, fix apostrophe encoding in Nix code blocks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant