@phase2 @domain @lsp @lsp_cli @lsp_cli_new_coverage Feature: LSP CLI commands coverage As a developer managing LSP server registrations I want the LSP CLI commands (add, remove, list, show) to work correctly So that I can register, inspect, and manage language servers from the command line Background: Given a clean LSP CLI test environment # --------------------------------------------------------------------------- # lsp add # --------------------------------------------------------------------------- @lsp_cli_add Scenario: Add LSP server with valid YAML config Given a valid LSP server YAML config file When I run lsp CLI add with --config pointing to the YAML file Then the lsp CLI command should succeed And the lsp CLI output should contain "LSP Server Registered" @lsp_cli_add @error_handling Scenario: Add LSP server with non-existent config file When I run lsp CLI add with --config pointing to a non-existent file Then the lsp CLI command should abort And the lsp CLI output should contain "not found" @lsp_cli_add @error_handling Scenario: Add LSP server with invalid YAML that is not a mapping Given a YAML config file containing a list instead of a mapping When I run lsp CLI add with --config pointing to the invalid YAML file Then the lsp CLI command should abort And the lsp CLI output should contain "Schema validation error" @lsp_cli_add Scenario: Add LSP server with --update flag overwrites existing Given a valid LSP server YAML config file And the LSP server has been registered via CLI When I run lsp CLI add with --config and --update Then the lsp CLI command should succeed And the lsp CLI output should contain "LSP Server Registered" @lsp_cli_add Scenario: Add LSP server with -u short form overwrites existing Given a valid LSP server YAML config file And the LSP server has been registered via CLI When I run lsp CLI add with --config and -u short form Then the lsp CLI command should succeed And the lsp CLI output should contain "LSP Server Registered" @lsp_cli_add Scenario: Add LSP server with --format json Given a valid LSP server YAML config file When I run lsp CLI add with --config and --format json Then the lsp CLI command should succeed And the lsp CLI output should contain "registered" @lsp_cli_add @error_handling Scenario: Add duplicate LSP server without --update is rejected Given a valid LSP server YAML config file And the LSP server has been registered via CLI When I run lsp CLI add with --config without --update Then the lsp CLI command should abort And the lsp CLI output should contain "already registered" @lsp_cli_add @error_handling Scenario: Add LSP server with schema validation error from Pydantic Given a YAML config file with invalid schema fields When I run lsp CLI add with --config pointing to the bad schema YAML file Then the lsp CLI command should abort And the lsp CLI output should contain "Schema validation error" # --------------------------------------------------------------------------- # lsp remove # --------------------------------------------------------------------------- @lsp_cli_remove Scenario: Remove a registered LSP server with --yes Given a valid LSP server YAML config file And the LSP server has been registered via CLI When I run lsp CLI remove with name "local/test-lsp" and --yes Then the lsp CLI command should succeed And the lsp CLI output should contain "LSP Server Removed" @lsp_cli_remove @error_handling Scenario: Remove an unknown LSP server returns not found error When I run lsp CLI remove with name "local/nonexistent" and --yes Then the lsp CLI command should abort And the lsp CLI output should contain "not found" @lsp_cli_remove Scenario: Remove a registered LSP server with --format json Given a valid LSP server YAML config file And the LSP server has been registered via CLI When I run lsp CLI remove with name "local/test-lsp" and --yes and --format json Then the lsp CLI command should succeed And the lsp CLI output should contain "removed" # --------------------------------------------------------------------------- # lsp list # --------------------------------------------------------------------------- @lsp_cli_list Scenario: List LSP servers when servers are registered Given multiple LSP servers have been registered via CLI When I run lsp CLI list Then the lsp CLI command should succeed And the lsp CLI output should contain "LSP Servers" And the lsp CLI output should contain "listed" @lsp_cli_list Scenario: List LSP servers when no servers are registered When I run lsp CLI list Then the lsp CLI command should succeed And the lsp CLI output should contain "No LSP servers found" @lsp_cli_list Scenario: List LSP servers filtered by namespace Given multiple LSP servers have been registered via CLI When I run lsp CLI list with --namespace "local" Then the lsp CLI command should succeed And the lsp CLI output should contain "local/test-lsp" And the lsp CLI output should not contain "devops/clangd" @lsp_cli_list Scenario: List LSP servers with --format json Given multiple LSP servers have been registered via CLI When I run lsp CLI list with --format json Then the lsp CLI command should succeed And the lsp CLI output should be valid JSON @lsp_cli_list Scenario: List LSP servers filtered by language Given multiple LSP servers have been registered via CLI When I run lsp CLI list with --language "python" Then the lsp CLI command should succeed And the lsp CLI output should contain "local/test-lsp" # --------------------------------------------------------------------------- # lsp show # --------------------------------------------------------------------------- @lsp_cli_show Scenario: Show details for a registered LSP server Given a valid LSP server YAML config file And the LSP server has been registered via CLI When I run lsp CLI show with name "local/test-lsp" Then the lsp CLI command should succeed And the lsp CLI output should contain "LSP Server Details" And the lsp CLI output should contain "local/test-lsp" @lsp_cli_show @error_handling Scenario: Show details for an unknown LSP server returns error When I run lsp CLI show with name "local/nonexistent" Then the lsp CLI command should abort And the lsp CLI output should contain "not found" @lsp_cli_show Scenario: Show LSP server with --format json Given a valid LSP server YAML config file And the LSP server has been registered via CLI When I run lsp CLI show with name "local/test-lsp" and --format json Then the lsp CLI command should succeed And the lsp CLI output should contain "local/test-lsp" @lsp_cli_show Scenario: Show LSP server displays environment variables when present Given a valid LSP server YAML config file with env vars And the LSP server with env has been registered via CLI When I run lsp CLI show with name "local/test-lsp-env" Then the lsp CLI command should succeed And the lsp CLI output should contain "Environment" # --------------------------------------------------------------------------- # Helper functions # --------------------------------------------------------------------------- @lsp_cli_helpers Scenario: Reset and get registry helpers work correctly When I call _reset_registry and then _get_registry Then a new LspRegistry instance should be returned And the new registry should be empty