mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-05 01:50:27 +08:00
99 lines
3.3 KiB
Python
99 lines
3.3 KiB
Python
"""Test if URI inconsistency causes the issue."""
|
|
|
|
import asyncio
|
|
import json
|
|
from pathlib import Path
|
|
from codexlens.lsp.standalone_manager import StandaloneLspManager
|
|
|
|
async def test_with_consistent_uri():
|
|
"""Test prepareCallHierarchy with different URI formats."""
|
|
|
|
workspace_root = Path("D:/Claude_dms3/codex-lens")
|
|
test_file = workspace_root / "test_simple_function.py"
|
|
resolved = test_file.resolve()
|
|
|
|
print("Testing URI Consistency")
|
|
print("="*80)
|
|
|
|
# Different URI formats to try
|
|
uri_standard = resolved.as_uri()
|
|
uri_lowercase = uri_standard.replace("file:///D:", "file:///d:")
|
|
|
|
print(f"Standard URI: {uri_standard}")
|
|
print(f"Lowercase URI: {uri_lowercase}")
|
|
|
|
manager = StandaloneLspManager(
|
|
workspace_root=str(workspace_root),
|
|
timeout=30.0,
|
|
)
|
|
|
|
try:
|
|
print("\n1. Starting LSP manager...")
|
|
await manager.start()
|
|
|
|
state = await manager._get_server(str(test_file))
|
|
if not state:
|
|
print(" [ERROR] No server state")
|
|
return
|
|
|
|
print(" [OK] Server ready")
|
|
|
|
# Open document
|
|
print("\n2. Opening document...")
|
|
await manager._open_document(state, str(test_file))
|
|
await asyncio.sleep(2)
|
|
print(" [OK] Document opened, waited 2s")
|
|
|
|
# Test 1: Standard URI (as_uri)
|
|
print("\n3. Test with standard URI...")
|
|
params1 = {
|
|
"textDocument": {"uri": uri_standard},
|
|
"position": {"line": 11, "character": 4} # main function
|
|
}
|
|
print(f" Params: {json.dumps(params1)}")
|
|
result1 = await manager._send_request(state, "textDocument/prepareCallHierarchy", params1)
|
|
print(f" Result: {result1}")
|
|
|
|
# Test 2: Lowercase drive letter
|
|
print("\n4. Test with lowercase drive letter URI...")
|
|
params2 = {
|
|
"textDocument": {"uri": uri_lowercase},
|
|
"position": {"line": 11, "character": 4}
|
|
}
|
|
print(f" Params: {json.dumps(params2)}")
|
|
result2 = await manager._send_request(state, "textDocument/prepareCallHierarchy", params2)
|
|
print(f" Result: {result2}")
|
|
|
|
# Test 3: Position at function name start
|
|
print("\n5. Test with position at 'def' keyword (char 0)...")
|
|
params3 = {
|
|
"textDocument": {"uri": uri_lowercase},
|
|
"position": {"line": 11, "character": 0}
|
|
}
|
|
result3 = await manager._send_request(state, "textDocument/prepareCallHierarchy", params3)
|
|
print(f" Result: {result3}")
|
|
|
|
# Test 4: Different positions on line 12 (1-indexed = line 11 0-indexed)
|
|
print("\n6. Testing different character positions on 'def main():'...")
|
|
for char in [0, 4, 5, 6, 7, 8]:
|
|
params = {
|
|
"textDocument": {"uri": uri_lowercase},
|
|
"position": {"line": 11, "character": char}
|
|
}
|
|
result = await manager._send_request(state, "textDocument/prepareCallHierarchy", params)
|
|
status = "OK" if result else "None"
|
|
print(f" char={char}: {status} - {result[:1] if result else '[]'}")
|
|
|
|
except Exception as e:
|
|
print(f"\n[ERROR] {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
finally:
|
|
print("\n7. Cleanup...")
|
|
await manager.stop()
|
|
print(" [OK]")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_with_consistent_uri())
|